• 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语法(参考地址)

  • 相关阅读:
    开发进度01
    eclipse 调用cmd运行DataX
    kettle 新建DB连接双击打不开
    用户体验评价
    找水王课堂练习
    人月神话阅读笔记01
    用户模板和用户场景
    大道至简阅读笔记03
    第九周
    第八周总结
  • 原文地址:https://www.cnblogs.com/dand/p/10283247.html
Copyright © 2020-2023  润新知