Search code examples
javaspringspring-profiles

How to set a Spring profile to a package?


I want to set a profile name to a whole package and I don't know how. If where is no easy way then I have to mark every class in the package and sub packages with @Profile annotation.

<context:component-scan/> tag does not support attribute like profile so I have no idea.


Solution

  • If you don't mix XML and Java config you could use @Profile on a bean which has @ComponentScan annotation with your target package maybe?

    Similarly with XML: you can have two different <beans ...> sections, each with different profile and in each of the section you define your own <context:component-scan basePackage="..." />

    @Configuration
    @Profile("profile1")
    @ComponentScan(basePackage="package1")
    class Config1 {
    }
    
    @Configuration
    @Profile("profile2")
    @ComponentScan(basePackage="package2")
    class Config2 {
    }