@Profile
Maven を使って Spring Boot を使わずに作業するのに苦労しています。pom.xml で、maven プロファイル (「env」と「dev」もデフォルト) を定義しました。
残念ながら、プロジェクトをビルドしようとするたびに:
mvn clean install -Dspring.profiles.active=env
「デフォルト」プロファイルは常に適用されます (Spring では、Maven は Maven の目的で「env」を適用します)。System.getProperty("spring.profiles.active")
私もandで動作させようとしましSystem.getenv("spring.profiles.active")
たが、それらは常にnullを返しました。これが非 Web アプリケーションであることも言及する価値があると思います。
Beans (適切なプロパティを読み取るため):
@Bean
@Profile({"default"})
public static PropertySourcesPlaceholderConfigurer defaultProperties() {
return getPropertySourcesPlaceholderConfigurer("db.yml");
}
@Bean
@Profile({"env"})
public static PropertySourcesPlaceholderConfigurer envProperties() {
return getPropertySourcesPlaceholderConfigurer("db-env.yml");
}
@Bean
@Profile({"test"})
public static PropertySourcesPlaceholderConfigurer devProperties() {
return getPropertySourcesPlaceholderConfigurer("db-test.yml");
}
private static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer(String resource) {
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource(resource));
final Properties object = yaml.getObject();
if (object != null) {
propertySourcesPlaceholderConfigurer.setProperties(object);
}
return propertySourcesPlaceholderConfigurer;
}
Pom.xml:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>spring.profiles.active</name>
<value>dev</value>
</property>
</activation>
</profile>
<profile>
<id>env</id>
<activation>
<property>
<name>spring.profiles.active</name>
<value>env</value>
</property>
</activation>
</profile>
</profiles>