如何在弹簧引导中从不同位置读取活动配置文件?



我有我的应用程序。属性文件在src/main/resources,我有我不同的活动配置文件(应用程序开发。在src/main/resources/Properties .

我正在使用springboot 2.7.5版本

我尝试在应用程序中配置它。属性文件位于目录-src/main/resources中spring.profiles.active = dev

,但它没有读取application-dev。目录src/main/resources/Properties

中的属性为了解决这个问题,我创建了两个类
@Configuration
public class ActiveProfileConfiguration extends AbstractSecurityWebApplicationInitializer{
private static final Logger log = LoggerFactory.getLogger(ApplicationJPAConfiguration.class);
private static final String SPRING_PROFILES_ACTIVE = "SPRING_PROFILES_ACTIVE";
String profile;
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 configured  is  ****** "+ profile);
servletContext.setInitParameter("spring.profiles.active", profile);
}

}

@Configuration
@Profile("local")
public class DevPropertyReader {
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer();
Resource[] resources = new ClassPathResource[] { new ClassPathResource("application.properties"), new ClassPathResource("EnvironmentProfiles/application-local.properties") };
ppc.setLocations(resources);
ppc.setIgnoreUnresolvablePlaceholders(true);
System.out.println("env active profile");
return ppc;
}

}

但仍无法解决此问题。

Spring将不查找自定义/properties文件夹中的属性文件:

21.2应用程序属性文件SpringApplication将从应用程序加载属性。属性文件,并添加他们到Spring环境:

  • 当前目录的/config子目录。
  • 当前目录
  • 配置包
  • 类路径root

https://docs.spring.io/spring-boot/docs/1.0.1.RELEASE/reference/html/boot-features-external-config.html boot-features-external-config-application-property-files

最简单的解决方案是将其移动到src/main/resources文件夹的根目录。

将.properties放到如下结构中:

src/
├─ main/
│  ├─ resources/
│  │  ├─ application.properties
│  │  ├─ application-dev.properties
│  │  ├─ application-prod.properties
下面的Dockerfile示例在运行应用程序时设置正确的Spring Profile:
ENTRYPOINT java -Dspring.profiles.active=prod -jar /app.jar

但是通过WebApplicationInitializer, Beans XML, Maven profile等还有很多其他的选择…

相关内容

  • 没有找到相关文章

最新更新