aop中execution 表达式

                                                     execution 表达式

学习Spring中的aop组装切面时遇到的execution表达式,下面是execution表达式的详解

切入点表达式:

整个表达式可以分为五个部分:

1、execution(): 表达式主体。

2、第一个*号:方法返回类型, *号表示所有的类型。

3、包名:表示需要拦截的包名。

4、第二个*号:表示类名,*号表示所有的类。

5、*(..):最后这个星号表示方法名,*号表示所有的方法,后面( )里面表示方法的参数,两个句点表示任何参数

  execution(* 包名.*.*(..))

    规范写法:execution(* com.baizhi.service.UserServiceImpl.*(..))重点    最通用的        //执行接口下的所有接口方法

      

===========================================================================================

    

    书写接口实现方法:UserServiceImpl     

    方法类型:add();   query();    add(String name);   add(User user);  add(String name,Integer age);

    

    execution(* service.UserServiceImpl.add(..))        //执行add()方法

    

    execution(* service.UserServiceImpl.add(String))    //执行add(String name)方法

    

    execution(* service.UserServiceImpl.add(com.baizhi.entity.User))    //执行add(User user)方法

    

    execution(* service.UserServiceImpl.add(String , Integer))    //执行add(String name,Interger age)方法

    

    execution表达式的一般用法:

    execution(* service.UserServiceImpl.*(java.util.List))

    返回值:任意

    包:com.baizhi.service

    类:UserServiceImpl

    方法:任意

    参数:必须是List集合

    

    execution(* service.UserServiceImpl.add*(..))  重点

    返回值:任意

    包:com.baizhi.service

    类:UserServiceImpl

    方法:以add关键字开头的方法

    参数:任意

    

    execution(* service.UserServiceImpl.*.*(..))  重点

    返回值:任意

    包:com.baizhi.service

    类:当前包下的所有类

    方法:所有类中的所有方法

    参数:任意

    

    execution(* service..*.*(..))  重点

    返回值:任意

    包:service包以及它下面所有子包

    类:所有包中的所有类

    方法:所有类中的所有方法

    参数:任意

   

    execution(* *(..))   重点   不建议这样写    栈溢出

    

    注意:

        要尽可能精准的切入

    

    

猜你喜欢

转载自blog.csdn.net/M82_A1/article/details/84571810