Spring Boot kullanıyorum ve AspectJ'i de kullanmak istiyorum. (Tabii ki)@EnableAspectJAutoProxy çalışmıyor
aşağıdaki çalışır: @Component
çıkarılır ve @EnableAspectJAutoProxy
eklenirse
@Aspect @Component public class RequestMappingAspect { @Before("@annotation(org.springframework.web.bind.annotation.RequestMapping)") public void advice(JoinPoint joinPoint) { ... } }
Ancak, aşağıdaki çalışmaz.
@SpringBootApplication @EnableSwagger2 @EnableAspectJAutoProxy public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
AspectJ otomatik proxy doğru şekilde nasıl etkinleştirilir?
@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);
}
...
...
}
Bu sadece, aynı zamanda bunları doğru kablolu yönleri üzerinde @Aspect
-annotation eklemek sağladı:
AspectJ'yi-autoproxy @ EnableAspectJAutoProxy' AspectJ'i kullanmazsınız, ancak proxy tabanlı Spring AOP'yi kullanmazsınız. Ama yine de istediğin budur. – kriegaex
Tabii ki işe yaramaz ... 'Bileşeni 'kaldırırsanız, yönün hiçbir örneği oluşturulmaz, dolayısıyla hiçbir yönlendirme kullanılamaz. Çalışmak için hem '@ Bileşen 'hem de' Unsur' 'a ihtiyaç duyarsınız (ya da yönü' @ Bean 'yöntemi olarak tanımlar). Her iki durumda da, çalışmanın gerçekleştirilebilmesi için yönün bir örneğinin olması gerekir. –