1within表达式
通过类名进行匹配 粗粒度的切入点表达式
within(包名.类名)
则这个类中的所有的连接点都会被表达式识别,成为切入点。
<aop:pointcut expression="within(cn.tedu.service.UserServiceImpl)"
在within表达式中可以使用*号匹配符,匹配指定包下所有的类,注意,只匹配当前包,不包括当前包的子孙包。
<aop:pointcut expression="within(cn.tedu.service.*)"
在within表达式中也可以用*号匹配符,匹配包
<aop:pointcut expression="within(cn.tedu.*.*)"
在within表达式中也可以用..*号匹配符,匹配指定包下及其子孙包下的所有的类
<aop:pointcut expression="within(cn.tedu..*)"
2execution()表达式
细粒度的切入点表达式,可以以方法为单位定义切入点规则
语法:execution(返回值类型 包名.类名.方法名(参数类型,参数类型…))
例子1:
<aop:pointcut expression=
"execution(void cn.tedu.service.UserServiceImpl.addUser(java.lang.String))" id="pc1"/>
该切入点规则表示,切出指定包下指定类下指定名称指定参数指定返回值的方法。
例子2:
<aop:pointcut expression="execution(* cn.tedu.service.*.query())" id="pc1"/>
该切入点规则表示,切出指定包下所有的类中的query方法,要求无参,但返回值类型不限。
例子3:
<aop:pointcut expression="execution(* cn.tedu.service..*.query())" id="pc1"/>
该切入点规则表示,切出指定包及其子孙包下所有的类中的query方法,要求无参,但返回值类型不限。
例子4:
<aop:pointcut expression="execution(* cn.tedu.service..*.query(int,java.lang.String))" id="pc1"/>
该切入点规则表示,切出指定包及其子孙包下所有的类中的query方法,要求参数为int java.langString类型,但返回值类型不限。
例子5:
<aop:pointcut expression="execution(* cn.tedu.service..*.query(..))" id="pc1"/>
该切入点规则表示,切出指定包及其子孙包下所有的类中的query方法,参数数量及类型不限,返回值类型不限。
例子6:
<aop:pointcut expression="execution(* cn.tedu.service..*.*(..))" id="pc1"/>
该切入点规则表示,切出指定包及其子孙包下所有的类中的任意方法,参数数量及类型不限,返回值类型不限。这种写法等价于within表达式的功能。
例子7:
<aop:pointcut expression="execution(* cn.tedu.service..*.del*(..))" id="pc1"/>
该切入点规则表示,切出指定包及其子孙包下所有的类中的以del开头方法,参数数量及类型不限,返回值类型不限。