execution(modifiers-pattern?
ret-type-pattern declaring-type-pattern?
name-pattern(param-pattern) throws-pattern?)
以下为必须的
ret-type-pattern // 返回类型 1> * 匹配所有返回类型
name-pattern // 方法名称(全路径的类名等) 1> * 匹配所有方法名称
param-pattern // 参数类型 1> (..) 匹配所有参数 2> (*, String) *代表第一个参数类型为任意, 第二个为String
非必须的
modifiers-pattern // 方法修饰(public, protected, private)
例子:
1. 修饰类型为public方法, 任意返回类型, 任意方法, 任意参数
execution(public * *(..))
2. 任意修饰类型的方法, 任意返回类型, 以set开头的方法, 任意参数
execution(* set*(..))
1. 任意修饰类型的方法, 返回类型为int, 在类UserActionApi下的任何方法, 任意参数
execution(int com.gitom.attendance.action.api.UserActionApi.*(..))
2. 任意修饰类型的方法, 任意返回类型, 在类UserActionApi下的test方法, 任意参数
execution(* com.gitom.attendance.action.api.UserActionApi.test(..))
2. 任意修饰类型的方法, 任意返回类型, 在类UserActionApi下的test方法, 参数1> 任意类型 2> String
execution(* com.gitom.attendance.action.api.UserActionApi.test(*,String))
<!-- spring 管理 struts2 action -->
<aop:aspectj-autoproxy />
<aop:config proxy-target-class="true">
<aop:aspect ref="userFilter">
<!-- * 包名.类名.所有方法(所有参数) -->
<aop:pointcut id="userFiltercut" expression="execution(* com.gitom.attendance.action.api.UserActionApi.*(..))" />
<aop:before method="dofilter" pointcut-ref="userFiltercut"></aop:before>
</aop:aspect>
</aop:config>
本文详细解释了AOP(面向切面编程)中execution表达式的使用方法,包括必须的返回类型模式、方法名称模式及参数类型模式,以及可选的方法修饰符模式。通过多个实例展示了如何精确地指定拦截的目标方法。
964

被折叠的 条评论
为什么被折叠?



