首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何基于活动配置文件访问应用程序-{ profile }.properties文件

如何基于活动配置文件访问应用程序-{ profile }.properties文件
EN

Stack Overflow用户
提问于 2019-07-04 13:03:00
回答 2查看 6.4K关注 0票数 5

我需要访问项目位置以外的application.properties文件。我可以使用以下方法实现同样的目标:

代码语言:javascript
复制
@Component
@PropertySources({
        @PropertySource(value = "file:${user.home}/file/path/application.properties", ignoreResourceNotFound = false) })
public class PropConfig implements InitializingBean {

现在,我希望使用active profile实现相同的目标。如果dev配置文件是活动的,我需要获取application-dev.properties,如果stage配置文件是活动的,则需要获取application-stage.properties等等。

我使用的是Windows平台和带有SpringBoot1.5.x的JAVA 8

我尝试在application.properties文件中设置活动配置文件。但这不管用

代码语言:javascript
复制
spring.profiles.active=dev
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-04 23:50:02

SpringBoot1.5.X的解决方案

通过使用以下JVM参数运行应用程序,可以将文件夹添加为自定义配置位置:

代码语言:javascript
复制
-Dspring.config.location=file:${user.home}/file/path/

配置了这个JVM参数后,这个文件夹中的所有application-{profile}.properties文件都将被自动解析。

(或者,如果您喜欢使用环境变量而不是JVM参数,您可以通过设置SPRING_CONFIG_LOCATION环境变量来做同样的事情,例如在linux终端中使用以下命令:export SPRING_CONFIG_LOCATION=file:${user.home}/file/path/ )

现在,如果您的自定义配置文件夹中有一个文件application-dev.properties,应该可以通过添加以下内容来激活默认application.properties文件中的配置文件:

代码语言:javascript
复制
spring.profiles.active=dev

最后,@PropertySources注释是多余的,您可以删除它:

代码语言:javascript
复制
@Component
public class PropConfig implements InitializingBean {

参考资料:https://docs.spring.io/spring-boot/docs/1.5.0.RELEASE/reference/html/boot-features-external-config.html

SpringBoot2.x解决方案

这种方法主要与SpringBoot1.5.X相同,但略有不同。

在SpringBoot2.x中,spring.config.location参数的行为与早期版本略有不同。区别在于,在SpringBoot2.x中,spring.config.location参数覆盖默认配置位置:

当使用spring.config.location配置自定义配置位置时,它们将替换默认位置。(资料来源:弹簧启动文件)

由于将此参数设置为自定义配置文件夹将覆盖默认位置(我认为丢失默认配置位置上的配置文件不是所希望的行为),所以最好使用新的spring.config.additional-location参数,它不覆盖但只扩展默认位置:

代码语言:javascript
复制
-Dspring.config.additional-location=file:${user.home}/file/path/

(或者,如果您喜欢使用环境变量而不是JVM参数,则可以使用SPRING_CONFIG_SPRING环境变量)

参考资料:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

票数 9
EN

Stack Overflow用户

发布于 2019-07-04 13:29:07

请您尝试使用JVM参数设置活动配置文件,如下所示- -Dspring.profiles.active=dev

如果您的需求是限制特定bean在环境中使用,那么可以使用@Profile("dev")注释。

此引用可能会帮助您-> https://www.baeldung.com/spring-profiles

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56888575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档