欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

浅析SpringAop编程之切入点表达式

程序员文章站 2022-04-25 21:26:16
...

1、概述

切入点表达式:对符合表达式匹配模式的方法进行拦截,并对改方法所在的类生成代理对象。

切入点表达式的格式:

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)
          throws-pattern?)

通过格式可以看出:访问修饰符非必填,返回值类型必填,声明类型模式非必填,方法名称必填,方法参数必填,抛出异常非必填。

2、几个小栗子

1) 拦截所有public方法:execution(public * *(..))   

public  是访问修饰符,第一个*是返回值类型,第二个*是方法名称,(..)表示任意参数

2)拦截所有save开头的方法:execution(* save*(..))

解析:省略访问修饰符,第一个*是返回值类型,表示任意返回值类型,save*表示匹配以save开头的方法

3)拦截指定类的指定方法(拦截的时候一定要定位到具体方法):execution(* g_aop_pointCut.UserDao.save(..))

4)拦截指定类的所有方法:execution(* g_aop_pointCut.UserDao.* (..))

5)拦截指定包及其子包下的所有类所有方法:execution(* g_aop_pointCut.*.*(..))

6)多个表达式:execution(* g_aop_pointCut.UserDao.save(..)) || execution(* g_aop_pointCut.OrderDao.save(..))

7)效果与上面的相同,将"||"换成"or":execution(* g_aop_pointCut.UserDao.save(..)) or execution(* g_aop_pointCut.OrderDao.save(..))

8)与运算  and 和&&  (在此只是为了演示,并无实际意义,“&”是“&”的转义字符):execution(* g_aop_pointCut.UserDao.save(..)) and execution(* g_aop_pointCut.OrderDao.save(..))     或者execution(* g_aop_pointCut.UserDao.save(..)) && execution(* g_aop_pointCut.OrderDao.save(..))

9)非运算 :! execution(* g_aop_pointCut.UserDao.save(..))      或者     not execution(* g_aop_pointCut.UserDao.save(..))

 

相关标签: springAop