我正在使用Maven创建简单的Spring应用程序,并且有2个配置和属性。层次结构是:
- package.main
- App.java
- AppConfig.java
- app.properties
- package.main.model
- ModelConfig.java
- model.properties
App.java
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
System.out.println(applicationContext.getEnvironment().getActiveProfiles()[0]);
}
AppConfig.java
@Configuration
@Import(ModelConfig.class)
@PropertySource("classpath:/package/main/app.properties")
public class AppConfig {}
app.properties
spring.profiles.active = prod
ModelConfig.java
@Configuration
@PropertySource("classpath:/package/main/model/model.properties")
@ComponentScan
public class ModelConfig {}
model.properties
spring.profiles.active = dev
model.properties
会覆盖app.properties
(结果为dev
)?application.properties
像新属性一样无法覆盖?答案 0 :(得分:0)
按照定义为加载ModelConfig的bean的顺序,它将导致为' dev'设置活动的配置文件。
BTW,看看你的设置,通过这样的属性文件配置bean的活动配置文件虽然不是好主意,spring.profiles.active should be specified in
<强> application.properties 强> 文件,而不是通过单独的属性文件加载,所以当应用程序启动时,它正确加载bean的配置文件
调用时,或通过命令行参数
-Dspring.profiles.active
或以编程方式
context.getEnvironment()setActiveProfiles(&#34;活&#34);
一些很好的例子here