1. 程式人生 > >spring中的AOP與AspectJ的區別?

spring中的AOP與AspectJ的區別?

根據我看spring官方文件的理解(不出意外是最正確的答案):

①選擇spring的AOP還是AspectJ?

spring確實有自己的AOP。功能已經基本夠用了,除非你的要在介面上動態代理或者方法攔截精確到getter和setter。這些都是寫奇葩的需求,一般不使用。

②在使用AOP的時候,你是用xml還是註解的方式(@Aspect)?
1)如果使用xml方式,不需要任何額外的jar包。
2)如果使用@Aspect方式,你就可以在類上直接一個@Aspect就搞定,不用費事在xml裡配了。但是這需要額外的jar包( aspectjweaver.jar)。因為spring直接使用AspectJ的註解功能,注意只是使用了它 的註解功能而已。並不是核心功能 !!!


注意到文件上還有一句很有意思的話:文件說到 是選擇spring AOP還是使用full aspectJ?
什麼是full aspectJ?如果你使用"full aspectJ"。就是說你可以實現基於介面的動態代理,等等強大的功能。而不僅僅是aspectj的 注-解-功-能 !!!

如果用full AspectJ。比如說Load-Time Weaving的方式 還 需要額外的jar包 spring-instrument.jar

當然,無論是使用spring aop還是 aspectj都需要aspectjweaver.jar spring-aop.jar這兩個jar包。