2011-11-29 138 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