AOP源码分析三:pointcut的配置说明

aop配置中有如下一行:  

其中expression="execution(* com.aop.service..*(..))"的配置规则如下:

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
execution(方法的操作权限    返回值类型模式              方法所在的包                  方法名 (参数名)            异常)

public ,private  方法的操作权限(modifiers-pattern)
*最常用作返回类型模式(ret-type-pattern),它匹配任何返回类型
如果指定方法所在的包(声明类型模式declaring-type-pattern),请包含尾部"."以将其连接到名称模式组件
将*通配符用作方法名(名称模式name-pattern)的全部或部分。

参数名(参数模式)稍微复杂一些:
()                 匹配不带参数的方法,
(..)               匹配任何数量(零个或多个)参数。
(*)                模式匹配采用任何类型的一个参数的方法
(*,String)     匹配一个带有两个参数的方法。第一个可以是任何类型,而第二个必须是String


返回值,方法名,参数名,必须有,其他可选


执行任何公共方法:
execution(public * *(..))


执行名称以以下开头的任何方法set:
execution(* set*(..))


执行AccountService接口定义的任何方法:
execution(* com.xyz.service.AccountService.*(..))


执行service包中定义的任何方法:
execution(* com.xyz.service.*.*(..))


执行服务包或其子包中定义的任何方法:
execution(* com.xyz.service..*.*(..))

参考:
https://docs.spring.io/spring/docs/5.1.9.RELEASE/spring-framework-reference/core.html#aop

你可能感兴趣的:(AOP,java,Spring)