springboot 配置文件外放

springboot打成jar包后,虽然运行方便,但需要修改配置文件时就太不方便了。能不能把配置文件放在外面呢,这样就不用频繁打包替换了,对于系统默认的application.yml(或application.properties)的配置文件还是比较方便的,在jar包同级目录下创建config文件夹放进去就可以了,如果有其他自定义的yml,只需要在spring.profiles.active里注明就可以了,比如

 

 

spring:
  profiles:
    #local,config表示引入配置文件application.yml,application-config.yml,其中config是可以自定义为其他名称的
     active: local,config

 

 

 

如果是注解就比较麻烦了,举个栗子

 

 
//@ImportResource(locations = arrayOf("classpath:hikvision-service.xml"))//在jar内部xml生效,此项一般用于开发测试
@ImportResource(locations = arrayOf("file:config/hikvision-service.xml"))//在外部config文件夹下xml生效,此项一般用于jar包发布

 

还有一种情况是在代码里加载配置文件的,比如

 

PropertiesFactoryBean propertiesFactory = new PropertiesFactoryBean();
//propertiesFactory.setLocation(new ClassPathResource("application-qpid.properties"));//在jar内部xml生效,此项一般用于开发测试
propertiesFactory.setLocation(new ClassPathResource("file:config/application-qpid.properties"));//在外部config文件夹下生效,此项一般用于jar包发布

 

 

这两种要分情况,比如在开发时用classpath,但在打包时要改为file才能在外部生效。

 

这样的话yml(properties)和xml配置文件都可以放到外部了。

 

另外可以阅读以下这篇文章:https://www.cnblogs.com/xiaoqi/p/6955288.html,说不定还有更好的思路。

 

在Docker容器中运行Spring Boot的jar包 jar外的配置文件无法生效 - 剑握在手 - 博客园
https://www.cnblogs.com/flying607/p/8716021.html

你可能感兴趣的