Guice vs. Spring JavaConfig: A comparison of DI styles
DIスタイルの比較:Guice 対 SpringのJavaコードコンフィグ
http://jroller.com/page/habuma?entry=guice_vs_spring_javaconfig_a■[翻訳]Guice vs. SpringJavaConfig (1) A Knight's tour of Guice
■[翻訳]Guice vs. SpringJavaConfig (2) Guice and AOP
■[翻訳]Guice vs. SpringJavaConfig (3) A Knight's tour of Spring JavaConfig
Spring JavaConfig and AOP Spring JavaConfigとAOP
The minstrelAdvice() method is similar to the knight() and quest() methods in that it wires a MinstrelAdvice object into the Spring container. But what makes it special is its @SpringAdvice annotation. This annotation tells Spring JavaConfig that the bean configured in the method is actually AOP advice that implements one of Spring's advice interfaces (such as MethodBeforeAdvice or even AOP Alliance's MethodInterceptor). In fact, because the Guice example's MinstrelInterceptor implements the AOP Alliance MethodInterceptor class, it's perfectly suitable for reuse in the Spring JavaConfig example!
minstrelAdvice()メソッドは、Springコンテナの中のMinstrelAdviceオブジェクトに紐付けられたknight() と quest() メソッドと同じです。しかし、それを特別にしているのは、@SpringAdviceアノテーションです。このアノテーションは、そのメソッドのなかで設定されているBeanは実は、Springのアドバイスの一種であるインターフェイスを実装したAOPアドバイス(MethodBeforeAdviceや、さらにAOPアライアンスのMethodInterceptorといった)であることをSpring JavaConfigに教えています。
実は、GuiceサンプルのMinstrelInterceptorが、AOPアライアンスのMethodInterceptorクラスを実装したならば、SpringJavaConfigサンプルでも、完全に再利用することが可能なのです。
The @SpringAdvice annotation takes a pointcut expression as its value attribute. Here I'm using an AspectJ-style pointcut expression to indicate that I want the advice applied to the execution of the embarkOnQuest() method on any class.
@SpringAdviceアノテーションは、その属性値としてポイントカット式を受け取ります。ここでは、あらゆるクラスでembarkOnQuest()メソッドを実行するというアドバイスを適用したいと思う場所を示すためにAspectJスタイルのポイントカット式をつかいましょう。
And that ends our examination of Spring JavaConfig as applied to Spring in Action's knight/quest example. The full source code for the Spring JavaConfig example can be found here.
そして、Spring JavaConfigの試験は、Spring in Actionの「knight/quest」サンプルですでにやっています。Spring JavaConfigのサンプルの完全なソースコードは、ここ.にあります。