【发布时间】:2017-03-09 10:20:14
【问题描述】:
我为每个配置文件都有一个单独的 spring yaml 配置文件。
我需要从 CommandLineRunner 后代类中读取配置文件并执行相应的脚本。
有没有办法从 java 获取环境配置文件名称?
我已经试过了:
environment.getActiveProfiles();
但它只返回一个空字符串数组。
【问题讨论】:
标签: java spring spring-mvc spring-boot
我为每个配置文件都有一个单独的 spring yaml 配置文件。
我需要从 CommandLineRunner 后代类中读取配置文件并执行相应的脚本。
有没有办法从 java 获取环境配置文件名称?
我已经试过了:
environment.getActiveProfiles();
但它只返回一个空字符串数组。
【问题讨论】:
标签: java spring spring-mvc spring-boot
environment.getProperty("spring.profiles.active") 获取活跃的个人资料。【讨论】:
这个方法很适合我
private static final String SPRING_PROFILES_ACTIVE = "SPRING_PROFILES_ACTIVE";
protected void setSpringProfile(ServletContext servletContext) {
if(null!= System.getenv(SPRING_PROFILES_ACTIVE)){
profile=System.getenv(SPRING_PROFILES_ACTIVE);
}else if(null!= System.getProperty(SPRING_PROFILES_ACTIVE)){
profile=System.getProperty(SPRING_PROFILES_ACTIVE);
}else{
profile="local";
}
log.info("***** Profile set ---> "+ profile);
}
我同时使用 System.getenv 和 System.getProperty,因为我观察到在我的本地系统中 System.getProperty 有效,但在我的 docker 容器上 System.getenv() 有效。
此外,我将配置文件默认为“本地”配置文件,以防未设置任何内容。
【讨论】: