我有一个Spring AOP切入点execution(* someService.*(..))
。
这个切入点会匹配构造函数和bean的get / set属性方法吗?
这不是我的意图,也许这种行为会影响表现。
我只想建议真正的服务方法,例如我们getUserByID
等。
如何排除这些方法(get / set / constructor)?
答案 0 :(得分:3)
该切入点将匹配Spring AOP中的公共方法。所以是吸气者和二传手,而不是施工者。
Spring的参考是here。第8.2.3节,寻找"甚至是构造函数"。
仅引用一组方法的简洁方法是将切入点应用于服务实现的接口,而不是服务本身。这假设您的界面仅包含您想要建议的业务方法。
答案 1 :(得分:1)
如果它是第三方库而您不想出于某种原因使用标记接口,您可以始终基于这些方法的命名约定。例如,这仅适用于getter:
execution(* someService.get*(..))
此表达式将方面应用于getter和setter:
execution(* someService.get*(..)) && execution(* someService.set*(..))