2015-06-22 12 views
6

Używam Wiosna 4.16 z Java adnotacje, i chcę zrobić coś takiego:wiele @ComponentScan w Spring 4?

@Configuration 
@ComponentScan(basePackages = "com.example.business", includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = ServiceComponent.class)) 
@ComponentScan(basePackages = "com.example.business.framework") 
public class ServicesBaseConfiguration { 

} 

Obviusly, nie skompilować. Ale mam nadzieję, że zrozumiesz mój punkt widzenia. Chcę mieć wiele ComponentScans z różnymi pakietami i filtrami.

Nie mogę ujednolicić obu składników programu ComponentsScan, ponieważ nie można utworzyć żadnego komponentu z frameworku, ale te, które są opatrzone komentarzem ServiceComponent, czy mam rację?

Czy wiesz, jak mogę to rozwiązać? Dzięki z góry

Odpowiedz

7

Tworzenie dwóch pustych klas wewnętrznych i umieścić na nich adnotacji @ComponentScan:

@Configuration 
@Import({ServicesBaseConfiguration.Filtered.class, ServicesBaseConfiguration.Unfiltered.class}) 
public class ServicesBaseConfiguration { 

    @Configuration 
    @ComponentScan(basePackages = "com.example.business", includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = ServiceComponent.class)) 
    public static class Filtered {} 

    @Configuration 
    @ComponentScan(basePackages = "com.example.business.framework") 
    public static class Unfiltered {} 

} 

To powinno działać

+4

Chociaż to działa, uznałbym to obejście. Zrobiłem to, aby utworzyć prośbę o ulepszenie. https://jira.spring.io/browse/SPR-13151 –

+0

Dzięki wam oboje! Przyjmuję twoją odpowiedź, ponieważ najwyraźniej jest to jedyny sposób, aby to zrobić ... Pozdrawiam! – jscherman

+1

Dobra robota @ M.Deinum! Funkcja została zaimplementowana, a ja, nasz zespół, z niej korzystamy :) –

Powiązane problemy