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自動プロキシを正しく有効にする方法は?
同じことについて疑問に思って、私たちはこれに似た何かをすることになりました:
@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
-アノテーションを追加するだけで、アスペクトも正しく配線されました。これは無意味な回答だったかもしれませんが、問題をどのように解決したかを説明しており、問題の実際の解決策ではありません。これを削除したい場合はお知らせください。
スプリング構成には@EnableAspectJAutoProxyと、@ Aspect/@ Componentアノテーションの組み合わせの両方が必要です。
@EnableAspectJAutoProxyは、xmlベースの<aop:aspectj-autoproxy>と同じことを行います