我正在使用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自动代理?
答案 0 :(得分:4)
你需要@EnableAspectJAutoProxy用于弹簧配置和@Aspect / @Component注释的组合
@EnableAspectJAutoProxy与基于xml的< aop:aspectj-autoproxy>
做同样的事情答案 1 :(得分:3)
想知道同样的事情,我们最终做了类似的事情:
@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
- 注释,这也正确地连接了它们。
可能这是一个毫无意义的回复,然而,它解释了我们如何解决问题 - 而不是问题的实际解决方案。如果您希望删除此内容,请与我们联系。