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