我想使用AOP概念来定义某些方法的执行时间,这些方法是使用我创建的注释标记的。然而,我的问题是,我在同一个类内部引用了注释方法。例如:如何配置Spring AOP以使用AspectJ
public void login(params) {
some logic ...
performLogin();
some logic ...
}
@Measured
public void performLogin() {
some logic ...
}
这是由以下事实引起的Spring AOP是使用基于代理的方式,不能“看到”同一个类中的内部调用一个已知的问题。显然我可以通过使用AspectJ而不是Spring AOP来解决这种情况。如果我理解正确,可以从Spring本身进行配置。从我发现的看起来,我应该包含@EnableAspectJAutoProxy
注释来配置Spring使用AspectJ代替它自己的AOP。不幸的是,它没有帮助,并且在添加注释之后,注释方法的截取没有发生。
在Spring参考文档中有很多关于此主题的information,我有点迷惑。还有什么我应该这样做,以便使用AspectJ?
P.S.请注意,我无法重构整个班级并将呼叫方法移到外面。
P.P.S.我也验证了我的切入点配置。我注释了外部调用的调用方法,它工作正常。
嗨,谢谢你的回答。这正是我想要做的。只是在配置上挣扎。 –
如果您使用的是java配置,请尝试为配置添加'@ EnableLoadTimeWeaving',并在我的回答 –
中检查到Native AspectJs的链接,或使用编译时编织 – JEY