切入点应用于bean ctor和所有get / set属性方法?

时间:2014-03-16 18:12:17

标签: spring aop spring-transactions

我有一个Spring AOP切入点execution(* someService.*(..))

这个切入点会匹配构造函数和bean的get / set属性方法吗?

这不是我的意图,也许这种行为会影响表现。

我只想建议真正的服务方法,例如我们getUserByID等。

如何排除这些方法(get / set / constructor)?

2 个答案:

答案 0 :(得分:3)

该切入点将匹配Spring AOP中的公共方法。所以是吸气者和二传手,而不是施工者。

Spring的参考是here。第8.2.3节,寻找"甚至是构造函数"。

仅引用一组方法的简洁方法是将切入点应用于服务实现的接口,而不是服务本身。这假设您的界面仅包含您想要建议的业务方法。

答案 1 :(得分:1)

如果它是第三方库而您不想出于某种原因使用标记接口,您可以始终基于这些方法的命名约定。例如,这仅适用于getter:

execution(* someService.get*(..))

此表达式将方面应用于getter和setter:

execution(* someService.get*(..)) && execution(* someService.set*(..))