附录:切入点表达式规则

  • 执行任何公有方法
    1. execution(public * *(..))
  • 执行任何以set开头的方法
    1. execution(* set*(..))
  • 执行com.xyz.service.AccountService类中的任何方法(执行某个类的任何方法)
    1. execution(* com.xyz.service.AccountService.*(..))
  • 执行当前包下类的任意方法(不含子包)
    1. execution(* com.xyz.service.*.*(..))
  • 执行当前包及其子包下类的任意方法
    1. execution(* com.xyz.service..*.*(..))
  • 执行当前包下类的任意方法(不含子包)
    1. within(com.xyz.service.*)
  • 执行当前包及其子包下类的任意方方法
    1. within(com.xyz.service..*)
  • 实现当前接口的类的任何方法
    1. this(com.xyz.service.AccountService)
  • 实现当前接口的类的任何方法
    1. target(com.xyz.service.AccountService)
  • 只有一个参数且实现了Serializable的任何方法
    1. args(java.io.Serializable)
  • 有Transactional注解标签的方法(针对特定注解标签)
    1. @target(org.springframework.transaction.annotation.Transactional)
  • 有Transactional注解标签的方法(针对特定注解标签)
    1. @within(org.springframework.transaction.annotation.Transactional)
  • 有Transactional注解标签的方法(针对特定注解标签)
    1. @annotation(org.springframework.transaction.annotation.Transactional)
  • 只有一个参数且参数有Classified注解的任何方法
    1. @args(com.xyz.security.Classified)
  • 指定名称的bean下任意方法
    1. bean(tradeService)
  • 满足通配符命名的bean下任意方法
    1. bean(*Service)