2015-06-22 14 views
6

Tôi đang sử dụng Spring 4.16 với Java chú thích, và tôi muốn làm một cái gì đó như:nhiều @ComponentScan trong Mùa xuân 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, nó không biên dịch. Nhưng tôi hy vọng bạn nhận được quan điểm của tôi. Tôi muốn có nhiều ComponentScans với các gói và bộ lọc khác nhau.

Tôi không thể hợp nhất cả hai ComponentsScan vì nó sẽ không tạo bất kỳ thành phần nào từ khung nhưng khung được chú thích bằng ServiceComponent, tôi có đúng không?

Bạn có biết làm thế nào tôi có thể giải quyết vấn đề này? Cảm ơn trước

Trả lời

7

Tạo hai lớp nội trống và đặt @ComponentScan chú thích vào chúng:

@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 {} 

} 

Nên hoạt động

+4

Mặc dù công trình này, tôi sẽ xem xét việc này một cách giải quyết. Tôi lấy sự tự do để tạo ra một yêu cầu nâng cao cho điều này. https://jira.spring.io/browse/SPR-13151 –

+0

Nhờ cả hai bạn! Tôi chấp nhận câu trả lời của bạn vì rõ ràng là cách duy nhất để làm điều này ... Kính trọng! – jscherman

+1

Công việc tốt cho @ M.Deinum! Tính năng này đã được triển khai và nhóm của chúng tôi đang sử dụng nó một cách vui vẻ :) –

Các vấn đề liên quan