Spring AOP - 执行覆盖

Spring AOP - Execution coverage

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

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

我在 http://spring.io/docs 上读过 Spring AOP,但无法理解 execution 表达式。

link中的spring docs 10.2.3部分很清楚,执行用于指定切入点。

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
  1. 修饰符模式 - 方法可见性(public、受保护、私有、*) ret-type-pattern - Return 方法的类型
  2. declaring-type-pattern - 包或 class(例如:com.app.service.* - 适用于此包中的所有 classes,com.app.service.UserService -仅适用于 UserService class, * - all)
  3. name-pattern - 方法名称(例如:set* - 所有 setter)
  4. param-pattern - 方法参数(.. - 任意数量的参数,java.lang.String - 以字符串为参数的方法。
  5. throws-pattern - 抛出此异常的方法。

你的情况

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

您正在将此切入点指定给 class 名称以 com.my.application.service 包及其子包中的 Manager 结尾的所有方法。