浅析SpringAop编程之切入点表达式
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(..))
上一篇: Error[Pe513]: a value of type "int" cannot be assigned to an entity of type "char (*)[6]" D:\Passion
下一篇: Hibernate中报错:ServiceRegistryBuilder cannot be resolved to a type
推荐阅读