此接口通常用于跟踪或记录应用程序以获取有关连接点的反射信息,下面是官方给的一个使用的例子

 aspect Logging {Logger logger = Logger.getLogger("MethodEntries");before(): within(com.bigboxco..*) && execution(public * *(..)) {Signature sig = thisJoinPoint.getSignature();logger.entering(sig.getDeclaringType().getName(),sig.getName());}}

源码:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package org.aspectj.lang;public interface Signature {String toString();//返回此签名的缩写字符串表示形式String toShortString();//返回此签名的扩展字符串表示形式String toLongString();//返回此签名的标识符部分。对于方法,这将返回方法名称。String getName();//返回表示为 int 的此签名上的修饰符。使用 java.lang.reflect.Modifier 上定义的常量和辅助方法来操作它,// 检查此签名是否公开 java.lang.reflect.Modifier.isPublic(sig.getModifiers());//  打印出修饰符 java.lang.reflect.Modifier.toString(sig.getModifiers());int getModifiers();//返回一个 java.lang.Class 对象,表示声明此成员的类、接口或方面。对于成员内声明,这将是声明成员的类型,而不是按词法写入声明的类型。使用 SourceLocation.getWithinType() 获取在词法上出现声明的类型。//为了与 java.lang.reflect.Member 保持一致,这个方法应该被命名为 getDeclaringClass()Class getDeclaringType();//返回声明类型的完全限定名称。这等效于调用 getDeclaringType().getName(),但是为了更高的效率缓存了结果String getDeclaringTypeName();
}

运行测试

package com.mz.testSpring.service;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;import java.util.Arrays;/*** @author mazheng* @title: testAspect* @projectName test_spring* @description: TODO* @date 2021/11/3015:33*/
@Component
@Aspect
public class testAspect {@After(value = "execution(* com.mz.testSpring.controler.testSpringControler.sayHello(..))")public void afterMethod(JoinPoint joinPoint){System.out.println("I'm fine ,thank you");//Signature测试Signature signature = joinPoint.getSignature();//方法测试System.out.println("toString; "+signature.toString());System.out.println("toShortString; "+signature.toShortString());System.out.println("toLongString; "+signature.toLongString());System.out.println("getName; "+signature.getName());System.out.println("getModifiers; "+signature.getModifiers());System.out.println("getDeclaringType; "+signature.getDeclaringType().getName());System.out.println("getDeclaringTypeName; "+signature.getDeclaringTypeName());}
}

HttpClient请求

GET http://localhost:8080/test/testAnno?name=Indian frends
Accept: application/json

运行结果

I'm fine ,thank you
toString; String com.mz.testSpring.controler.testSpringControler.sayHello(String)
toShortString; testSpringControler.sayHello(..)
toLongString; public java.lang.String com.mz.testSpring.controler.testSpringControler.sayHello(java.lang.String)
getName; sayHello
getModifiers; 1
getDeclaringType; com.mz.testSpring.controler.testSpringControler
getDeclaringTypeName; com.mz.testSpring.controler.testSpringControler

可以看出,Signature 也是为了获取原始方法的各种信息而存在的,并且信息更加的简洁,方便我们截取,他与JoinPoint合作可以让我们更方便的获取原始方法的各种信息(自己写字符串操作函数对JoinPoint接口的方法结果进行操作也是可以的,比较麻烦而已)

AOP编程过程中的Signature接口相关推荐

  1. AOP编程过程中的JoinPoint接口

    在AOP编程过程中需要使用到的一个 JoinPoint 接口,用来获取调用的信息,下面是这个接口的代码 // // Source code recreated from a .class file b ...

  2. 学习编程过程中-->遇到的错误

    文章目录 学习编程过程中-->遇到的错误(吕招焕) 1.java.sql.SQLException: Parameter index out of range (2 > number of ...

  3. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  4. 实例——在编程过程中进行单元测试

    这是一个真枪实弹的例子,如何在编程过程中进行单元测试. 本文以一个图书馆的书籍管理系统作为例子,讲述一个单元测试--编码的循环过程.这里只讲述一个独立画面的编写.画面的编码分两个部分,业务数据部分和界 ...

  5. UG编程过程中的几个小技巧

    UG编程过程中的几个小技巧 [一.UG运用小技巧] 当平移工作坐标系时经过向下按住ALT键,能够履行准确定位. 制图中,能够在线性尺度上用SHIFT-拖动来创立狭窄型尺度. 能够双击在资源条中的导航器 ...

  6. c语言错误出在花括号上,初学者在学习c语言编程过程中常出现的错误分析

    在高校经常中开设的第一科关于程序设计的语言就是C语言,这种语言有很多优势,比如说使用比较灵活,功能比较强大,可以用于编写程序.软件,但是对于初学者来说, 1 0 8 应用方法论 22第霸 0赫 6乱 ...

  7. Qt的日常编程过程中遇见的问题和使用

    Qt的日常编程过程中遇见的问题和注意 Qt的日常编程过程中遇见的问题 1.QString和String的转化的格式问题,中文转化过程中会出现问题. 2.使用qcustomplot的时候出现错误:LIN ...

  8. JAVA面试要点004_JAVA编程过程中为了性能优化_应该注意到的地方

    最近的机器内存又爆满了,出了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源和总结一些在ja ...

  9. MM32F3277 MicroPython移植过程中对应的接口文件

    简 介: 给出了在MM32移植MicroPython过程中基础语法中Pin相关的内容. 关键词: MM32F3277,machine,Pin §01 MacinePin /* machine_pin. ...

最新文章

  1. @RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
  2. JS三种简单排序算法
  3. 携程CEO称成功来自传统营销 B2C已经过时
  4. OpenCV离焦去模糊滤镜
  5. 互补输出级采用共集形式是为了使_天津大学胡文平《先进材料》:溶液法制备厘米级高度取向有机晶体阵列,可用于高性能有机场效应晶体管...
  6. Java学习记录 课程来自黑马刘意(风清扬)19年版
  7. c#二次开发明华URF-R330读写器读写问题解决方案
  8. 班级管理系统(SSM+LayUI)
  9. 初学视觉学习笔记----打开摄像头遇到的问题
  10. 微信小程序7-云存储
  11. Qt 给文本添加删除线 text-decoration
  12. 华为海思芯片型号及特征大全
  13. html5怎么将字体变成斜体,;html5斜体字
  14. 手机屏幕如何投屏到电脑上(Windows10)
  15. 网站识别Windows AD 域账号,并自动登录
  16. 全网首发!马士兵内部共享—1658页《Java面试突击核心讲》
  17. LeetCode-912-排序数组
  18. 磁通量,磁通,磁感应强度,磁场强度,磁导率
  19. Explorer经常出错重启是什么原因?
  20. rg1 蓝光危害rg0_LED蓝光危害评价的最新标准及测试方案介绍

热门文章

  1. 7_17_中科实训day03
  2. dom元素滚动条高度 js_javascript 获取滚动条高度+常用js页面宽度与高度[转]
  3. emacs linux 教程,Emacs教程
  4. 1669: 我的算法会不会Time Limit Exceeded
  5. 电子名片H5功能,让你完美展示企业和产品信息
  6. php中echo语句,php输出之echo和print语句
  7. Oracle 数据库服务重启步骤
  8. javascript面向对象思想
  9. 制药工程专业可以跨考计算机,我是学音乐大三学生想考研,想考别的专业请问能考什么专业比较好考...
  10. 群辉NAS搭建RSS阅读器教程