2011-11-29 128 views
3

我有一个建立在春天的现有项目。混合弹簧AOP和aspectj编译器?

我想赶上调用HibernateTemplate.save(),所以我在exec(save())上定义一个切入点,并将时间记录在around通知中。我可以使用spring AOP定义方面,但是我可以看到spring AOP只有在切入点中的对象是一个bean时才起作用,但在我的情况下,HibernateTemplate可以直接在new()中创建客户端代码。

所以我不得不使用aspectj编译器,通过maven插件。我不知道是否有任何混合弹簧AOP和aspectj的潜在冲突? ----该项目的开发商以前可能已经使用Spring AOP的地方

感谢 杨

回答

1

我normaly用AspectJ代替弹簧代理的AOP为我所有的Spring应用程序。要做到这一点,你需要设置一些弹簧配置,大部分设置如mode="AspectJ"。一旦我忘记了这些配置中的某些配置,这意味着应用程序使用AspectJ进行某些Aspects,Spring-Proxy-AOP使用其他应用程序,并且是应用程序正常工作(除非我真的需要AspectJ而不是pring-Proxy- AOP)。

所以从我的角度来看:如果你有足够的测试用例,那就试试看。

0

这将工作正常。我做了很多次。我总是从Spring AOP开始,因为它很简单,只有在需要Spring AOP未提供的某些功能时才开始使用AspectJ。

我唯一的提示是尽可能使用@AspectJ风格,因此您可以通过轻微的配置更改轻松更改。

如果您是新注释风格,您可以在Espen Berntsen的博客上找到关于它的更多信息,@AspectJ cheat sheet