[英]Override Multiple Spring Application Properties
我正在使用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
不能被新属性覆盖? 它是按定义的bean加载ModelConfig的顺序进行的,这将导致将活动概要文件设置为“ dev”。
顺便说一句,查看您的设置,通过这样的属性文件配置bean的活动配置文件不是一个好主意, 应该在以下位置指定spring.profiles.active
application.properties文件,而不是通过单独的属性文件加载,因此在应用程序启动时,它将为配置文件正确加载Bean
或在调用时通过命令行参数
-Dspring.profiles.active
或以编程方式
context.getEnvironment()。setActiveProfiles(“ live”);
这里有一些很好的例子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.