温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行@Aspect注解的详细分析

发布时间:2021-12-08 15:50:34 来源:亿速云 阅读:135 作者:柒染 栏目:大数据

这篇文章给大家介绍如何进行@Aspect注解的详细分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

spring中支持9种@Aspect注解的函数,它们表示用不同的方式描述目标类的连接点,它们主要分别4种类型:

  • 方法切点函数:通过描述目标类信息定义连接点

  • 方法入参切点函数: 通过描述目标类方法入参的信息定义连接点

  • 目标类切点函数:通过描述目标类类型信息定义连接点

  • 代理类切点函数:通过描述目标类的代理类的信息定义连接点

下面我们看一下具体的切点函数的具体使用。

  • 函数入参的通配符

  • * 匹配任意字符,但它可能匹配上下文中的一个元素

  • .. 匹配任意字符,可以匹配上下文中的多个元素

  • + 表示按类型匹配指定类的所有类,必须跟在类名后面,也就是会匹配继承或者扩展指定类的所有类,包括指定类

@Aspect注解按是否支持通配付符及支持程度上分可以分为3类:

  • 支持所有通配符:excution()、within()、

  • 支持+通配符:args()、this()、target()

  • 不支持通配符:@args()、@within()、@target()、@annotation()

  • 逻辑运算符

我们知道切点是由函数组成,切点与切点之间可以进行逻辑运算,这就组合成了复合切点,下面我们看一下spring中支持的切点运算符:

  • && 与操作符 也就是执行切点的交集运算,在spring中除了使用&&符号我们还可直接使用and关键字

  • || 或操作符 也就是执行切点的并集运算,同样在spring中我们除了可以使用|| 符号外我们还可以使用or关键字

  • !非操作符 也就是执行反集运算,同样在spring中我们除了可以使用!符号外我们还可以使用not关键字

  • 不同的增强类型

  • @Before 

前置增强,相当于BeforeAdvice功能,该注解有两个属性它们分别是:

  • value: 用于定义切点

  • argNames: 因为无法通过Java反射获取到方法的入参名,所以如果我们想在运行期内,通过反射技术解析该切点,就可以在此属性中添加该方法的参数名,多个参数用逗号分隔

  • @AfterRetruning

后置增强,相当于AfterRetruningAdvice,该注解有4个属性:

  • value: 同上

  • pointcut: 表示切点信息,和value属性一样,如果显示的设置pointcut则会覆盖value

  • returning: 将目标对象方法的返回值绑定给增强的方法

  • argNames: 同上

  • @Around

环绕增强,相当于MethodInterceptor,该注解主要有2个属性:

  • value: 同上

  • argNames: 同上

  • @AfterThrowing

抛出增强,相当于ThrowsAdvice,该注解有4个属性:

  • value: 同上

  • pointcut: 同上

  • throwing: 将抛出的异常绑定到增强的方法中

  • argNames: 同上

  • @After

Final增强,不管是抛出异常还是正常退出,该增强都会执行,主要的功能是用于资源释放,该注解也有2个属性:

  • value:同上

  • argNames: 同上

  • @DeclareParents

引介增强,相当于IntroductionInterceptor,该注解有两个属性:

  • value: 同上

  • defaultImpl: 默认的接口实现类

关于如何进行@Aspect注解的详细分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI