1.within表达式
通过类名进行匹配 ,粗粒度的切入点表达式,最多控制到类级别
语法:within(包名.类名)
如下配置后类中的所有的连接点都会被表达式识别,成为切入点
在within表达式中可以使用*号匹配符,匹配指定包下所有的类,注意,只匹配当前包,不包括当前包的子孙包。
在within表达式中也可以用*号匹配符,匹配包
在within表达式中也可以用..*号匹配符,匹配指定包下及其子孙包下的所有的类
2.execution()表达式
细粒度的切入点表达式,可以以方法为单位定义切入点规则(细粒度表达式 --常用,execution可以实现within的所有功能)
语法:execution(返回值类型 包名.类名.方法名(参数类型,参数类型…))
2.1该切入点规则表示,切出指定包下指定类下指定名称指定参数指定返回值的方法。
<aop:pointcut expression=
"execution(void cn.wyy.service.UserServiceImpl.addUser(java.lang.String))" id="pc1"/>
2.2该切入点规则表示,切出指定包下所有的类中的query方法,要求无参,但返回值类型不限
<aop:pointcut expression="execution(* cn.wyy.service.*.query())" id="pc1"/>
2.3该切入点规则表示,切出指定包及其子孙包下所有的类中的query方法,要求无参,但返回值类型不限
<aop:pointcut expression="execution(* cn.wyy.service..*.query())" id="pc1"/>
2.4该切入点规则表示,切出指定包及其子孙包下所有的类中的query方法,要求参数为int java.langString类型,但返回值类型不限
<aop:pointcut expression="execution(* cn.wyy.service..*.query(int,java.lang.String))" id="pc1"/>
2.5该切入点规则表示,切出指定包及其子孙包下所有的类中的query方法,参数数量及类型不限,返回值类型不限
<aop:pointcut expression="execution(* cn.wyy.service..*.query(..))" id="pc1"/>
2.6该切入点规则表示,切出指定包及其子孙包下所有的类中的任意方法,参数数量及类型不限,返回值类型不限。这种写法等价于within表达式的功
<aop:pointcut expression="execution(* cn.wyy.service..*.*(..))" id="pc1"/>
2.7该切入点规则表示,切出指定包及其子孙包下所有的类中的任意方法,参数数量及类型不限,返回值类型不限。这种写法等价于within表达式的功能
<aop:pointcut expression="execution(* cn.wyy.service..*(..))" id="pc1"/>