web-dev-qa-db-ja.com

@EnableAspectJAutoProxyが機能しない

Spring Bootを使用していますが、AspectJを使用したいと思います。

次の作品(もちろん):

 @ Aspect 
 @ Component 
 public class RequestMappingAspect {
 
 @ Before( "@ annotation(org.springframework.web.bind.annotation。 RequestMapping) ")
 public void Advice(JoinPoint joinPoint){
 ... 
} 
} 

ただし、@Componentが削除され、 @EnableAspectJAutoProxy が追加され、以下は機能しません。

 @ SpringBootApplication 
 @ EnableSwagger2 
 @ EnableAspectJAutoProxy 
 public class Application {
 
 public static void main(String [] args) {
 SpringApplication.run(Application.class、args); 
} 
} 

AspectJ自動プロキシを正しく有効にする方法は?

9
Dante May Code

同じことについて疑問に思って、私たちはこれに似た何かをすることになりました:

@EnableAspectJAutoProxy(proxyTargetClass = true)
@Configuration("Main applicationContext")
@ComponentScan(
    basePackages = {"com.where.ever"},
    excludeFilters = {@ComponentScan.Filter(Aspect.class)})
public class ApplicationConfiguration {
    @Bean(autowire = Autowire.BY_TYPE)
    public SomeAspect someAspect() {
        return Aspects.aspectOf(SomeAspect.class);
    }
    ...
    ...
}

これにより、アスペクトに@Aspect-アノテーションを追加するだけで、アスペクトも正しく配線されました。これは無意味な回答だったかもしれませんが、問題をどのように解決したかを説明しており、問題の実際の解決策ではありません。これを削除したい場合はお知らせください。

4
vegaasen

スプリング構成には@EnableAspectJAutoProxyと、@ Aspect/@ Componentアノテーションの組み合わせの両方が必要です。

@EnableAspectJAutoProxyは、xmlベースの<aop:aspectj-autoproxy>と同じことを行います

5
Kalpesh Soni