spring aop pointcut expression

<aop:config>
<aop:pointcut id="allMethod" expression="execution(* *..BookManager.save(..))"/>
</aop:config>
 
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)  throws -pattern?)
其中带问号的modifiers-pattern?(public/protected) 和 declaring-type-pattern? throws-pattern? 可以不填
execution(* *..BookManager.save(..))的解读:
第一颗* 代表ret-type-pattern 返回值可任意,
*..BookManager 代表任意Pacakge里的BookManager类。
如果写成com.xyz.service.* 则代表com.xyz.service下的任意类
如果写成com.xyz.service.*.* 则代表com.xyz.service下的任意类的任意方法
com.xyz.service..* com.xyz.service则代表com.xyz.service及其子package下的任意类
save代表save方法,也可以写save* 代表saveBook()等方法
(..) 匹配0个参数或者多个参数的,任意类型
(x,..) 第一个参数的类型必须是X
(x,,,s,..) 匹配至少4个参数,第一个参数必须是x类型,第二个和第三个参数可以任意,第四个必须是s类型。

 

 

1)execution(* *(..))  表示匹配所有方法

2)execution(public * com.wh.UserService.*(..))

   表示匹配com.wh.UserService中所有的公有方法

3)execution(* com.wh.server..*.*(..))

   表示匹配com.wh.server包及其子包下的所有方法

规律:

execution((范围) 类型 类名(或包.*) (..))

猜你喜欢

转载自laetitia.iteye.com/blog/1568755