Spring AOP中args()、arg-names、argNames

先小结一下:

        args()是用来匹配并且接收目标方法的参数的.

        argNames(用在注解中)与arg-names(用在XML中),他们是同一个东西.

        argNames用来接收AspectJ表达式中的参数(其中也包含args).

        可以通过调整argNames参数名的顺序,来调整参数传值的顺序.

==========================schema===========================

==========================aspectJ===========================

注解配置时            

//  如果在@Pointcut中定义了args,那么也要定义argNames,并且两者的参数名称必须一样,顺序可以不一样,(有其他作用)
//  注意是使用&&链接
@Pointcut(value="execution(* *.*(..)) && args(paramName)", argNames="paramName")

5.arg-names说明:
    XML配置时        

<aop:(before|after|..) ... arg-names="paramName"/> // 通知方法的定义中

注解配置时       

 @Pointcut(...,argNames="paramName")   // 切入点的定义中
 @Before(..., argNames="paramName")    // 通知方法的定义中

6.args可以用来定义目标方法必须要具备的参数个数,而且执行通知的方法也必须带相同个数参数|或者不带参数. 提示:通知方法中的参数类型可以是目标参数的类型或者目标参数的父类型.(推理一下如果通知方法与目标方法类型不一致会直接导致ClassCastException异常)

7.args与args-names是引用的关系,并且是根据参数名称来传递值(不是顺序),所以参数名字必须一致
        -- 我猜是args的参数值传递给argNames,

8.基于注解配置时更特殊,除上面两种约束之外
        在@pointcut中args与args-names必须成对出现

9.AspectJ语法(参考地址)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值