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