Spring AOP - 执行范围

时间:2015-12-18 09:17:48

标签: spring-aop

这个execution适用于哪些类(在哪些包中)和方法?

<aop:config>
    <aop:pointcut id="serviceOperation" expression="execution(* com.my.application.service..*Manager.*(..))"/>
</aop:config>

我在http://spring.io/docs上阅读有关Spring AOP的内容,但无法理解execution表达式。

1 个答案:

答案 0 :(得分:1)

link中的spring docs 10.2.3部分可以看出,执行用于指定切入点。

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
  1. modifiers-pattern - 方法可见性(public,protected,private,*) ret-type-pattern - 方法的返回类型
  2. 声明-type-pattern - 包或类(例如:com.app.service。* - 适用于此包中的所有类,com.app.service.UserService - 仅适用于UserService类,* - all)< / LI>
  3. name-pattern - 方法名称(例如:set * - all setters)
  4. param-pattern - 方法参数(.. - 任意数量的参数,java.lang.String - 将String作为参数的方法。
  5. throws-pattern - 抛出此异常的方法。
  6. 在你的情况下

    expression="execution(* com.my.application.service..*Manager.*(..))"/>
    

    您正在为所有方法指定此切入点,其类名以com.my.application.service包中的Manager结尾&amp;它的子包。