web-dev-qa-db-ja.com

Javaベースのアノテーションで<aop:aspectj-autoproxy>を有効にする方法

XMLなしでSpring AOPをセットアップしようとしています。 <aop:aspectj-autoproxy>アノテーションが付けられたクラスで@Configurationを有効にします。

これは、XMLファイルで定義される方法です。

<aop:aspectj-autoproxy>
<aop:include name="msgHandlingAspect" />
</aop:aspectj-autoproxy>

クラスに@Configuration@EnableAspectJAutoProxyの注釈を付けようとしましたが、何も起こりませんでした。

37
user1374907

同じ@ConfigurationクラスでアスペクトBeanを作成しましたか? ドキュメント が提案するものは次のとおりです。

 @Configuration
 @EnableAspectJAutoProxy
 public class AppConfig {
     @Bean
     public FooService fooService() {
         return new FooService();
     }

     @Bean // the Aspect itself must also be a Bean
     public MyAspect myAspect() {
         return new MyAspect();
     }
 }
46

受け入れられた回答ソリューションを使用しましたが、予期しない問題があり、このパラメーターを構成に追加するまで理解できませんでした。

@ EnableAspectJAutoProxy(proxyTargetClass = true)

@Controllerに注釈を使用する場合は、この方法で構成する必要があります

Java 8を持っている場合、1.8.Xより大きいAspectJのバージョンを使用する必要があることを覚えておいてください。

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class AppConfig {

    @Bean
    public AccessLoggerAspect accessLoggerAspect() {
        return new AccessLoggerAspect();
    }

}
0
FarukT