zoukankan      html  css  js  c++  java
  • 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语法(参考地址)

  • 相关阅读:
    pycharm中快捷键的使用
    Python中用format函数格式化字符串的用法
    Python eval()函数的用法
    python中的字符数字之间的转换函数
    python_控制台输出带颜色的文字方法
    Alpha通道是什么意思,和rgb通道有什么区别
    转载-【深度学习】深入理解Batch Normalization批标准化
    深度卷积网络-Inception系列
    微调Inception V3网络-对Satellite分类
    h5模型文件转换成pb模型文件
  • 原文地址:https://www.cnblogs.com/dand/p/10283247.html
Copyright © 2011-2022 走看看