Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

multiple @ComponentScan in Spring 4?

I am using Spring 4.16 with Java Annotations, and i want to do something like:

@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, it doesn't compile. But i hope you get my point. I want to have multiple ComponentScans with differents packages and filters.

I cannot unify both ComponentsScan because it wouldn't create any component from framework but those which are annotated with ServiceComponent, am i right?

Do you know how could i solve this? Thanks in advance

like image 262
jscherman Avatar asked Jun 22 '15 00:06

jscherman


1 Answers

Create two empty internal classes and put the @ComponentScan annotation on them:

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

}

That should work

like image 111
Raniz Avatar answered Oct 18 '22 17:10

Raniz