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"/>