2017-01-23 12 views
5

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ı:

+0

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

+2

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. –

cevap

1

aynı şeyi merak, biz buna benzer bir şey yapmak sona erdi. Bunun, bunun anlamsız bir cevap olabileceği düşünülse de, sorunu nasıl çözdüğümüzü açıklıyor - ve sorunun gerçek çözümünü değil. Bunun silinmesini istiyorsanız bana bildirin.

+0

Bu konuda otomatik bir şey yok ... Görünüm, bir '@ Bean' yöntemiyle oluşturulur, böylece yeni bir görünüm eklerseniz başka bir yöntem eklemeniz gerekir. –

2

Sen bahar yapılandırma ve @Aspect kombinasyonu hem @EnableAspectJAutoProxy ihtiyaç/@Component ek açıklamalar

@EnableAspectJAutoProxy yapar xml tabanlı < aop aynı şey: `ile >