Spring Boot 1.5.X 解决方案
您可以使用以下 JVM 参数运行应用程序,将文件夹添加为自定义配置位置:
-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
:
spring.profiles.active=dev
最后,@PropertySources
注释是多余的,您可以将其删除:
@Component
public class PropConfig implements InitializingBean {
参考:https ://docs.spring.io/spring-boot/docs/1.5.0.RELEASE/reference/html/boot-features-external-config.html
Spring Boot 2.X 解决方案
该方法主要与 Spring Boot 1.5.X 相同,但略有不同。
在 Spring Boot 2.X 中,spring.config.location
参数的行为与早期版本略有不同。不同之处在于,在 Spring Boot 2.X 中,spring.config.location
参数覆盖了默认配置位置:
当使用 spring.config.location 配置自定义配置位置时,它们会替换默认位置。(来源:Spring Boot 文档)
由于将此参数设置为您的自定义配置文件夹将覆盖默认位置(我认为丢失默认配置位置上的配置文件不是所需的行为),因此最好使用spring.config.additional-location
不覆盖但仅扩展的新参数默认位置:
-Dspring.config.additional-location=file:${user.home}/file/path/
(或者,如果您更喜欢使用环境变量而不是 JVM 参数,则可以使用 SPRING_CONFIG_ADDITIONAL-LOCATION 环境变量)
参考:https ://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html