Odi*_*din 18 aop spring spring-aop
我在Spring(版本2.5.6)中使用切入点定义时遇到了问题.我试图拦截对类的所有方法调用,除了给定的方法(下面的例子中的someMethod).
<aop:config>
<aop:advisor
pointcut="execution(* x.y.z.ClassName.*(..)) AND NOT
execution(* x.y.x.ClassName.someMethod(..))"
/>
</aop:config>
Run Code Online (Sandbox Code Playgroud)
但是,也会为someMethod调用拦截器.
然后我尝试了这个:
<aop:config>
<aop:advisor
pointcut="execution(* x.y.z.ClassName.(* AND NOT someMethod)(..)) )"
/>
</aop:config>
Run Code Online (Sandbox Code Playgroud)
但这不能编译,因为它不是有效的语法(我得到一个BeanCreationException).
任何人都可以提供任何建议吗?
小智 21
我知道它在这个阶段可能有点晚了但我一直有同样的问题,我通过逃避&符号来解决它,&& !而不是'AND NOT'或'&&!'.我在xml文件中这样做
<aop:config>
<aop:pointcut id="blah" expression="execution(* com.disney.goofy..*.*(..)) && !@annotation(com.disney.goofy.NonDisneyCharacter)"/>
<aop:advisor advice-ref="transAdvice" pointcut-ref="blah"/>
</aop:config>
Run Code Online (Sandbox Code Playgroud)
这将建议应用于com.disney.goofy中执行的所有方法,并且未使用NonDisneyCharacter注释
这应该可以工作(spring AOP参考):
pointcut="execution(* x.y.z.ClassName.*(..))
&& !execution(* x.y.x.ClassName.someMethod(..))"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39544 次 |
| 最近记录: |