混合弹簧AOP和aspectj编译器?

时间:2011-11-29 01:01:45

标签: spring aop aspectj

我有一个基于spring的现有项目。

我想捕获对HibernateTemplate.save()的调用,所以我在exec(save())上定义了一个切入点,并在around建议中记录时间。

我可以使用spring AOP定义方面,但是我可以看到spring AOP仅在切入点中的对象是bean时才有效,但在我的情况下,HibernateTemplate可以直接在现有客户端中的new()中创建代码。

所以我必须通过maven插件使用aspectj编译器。我想知道混合弹簧AOP和aspectj是否存在任何潜在的冲突? ----此项目的先前开发人员可能已经在某处使用过Spring AOP

由于 杨

2 个答案:

答案 0 :(得分:1)

我正式使用AspectJ而不是Spring-Proxy-AOP用于我的所有Spring应用程序。为此,您需要设置一些弹簧配置,大多数设置为mode="AspectJ"。一旦我忘记了其中一些配置,这意味着应用程序使用AspectJ用于某些Aspects和Spring-Proxy-AOP用于其他配置,是的,应用程序工作正常(除了我真正需要AspectJ而不是pring-Proxy-的情况) AOP)。

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

答案 1 :(得分:0)

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

我唯一的建议是尽可能使用@AspectJ样式,这样您就可以轻松更改配置更改。

如果您不熟悉注释样式,可以在Espen Berntsen的博客上找到更多相关信息,@AspectJ cheat sheet