在项目开发测试及上线运行后经常会有需要修改配置文件中参数的需求,比如同一个参数在不同环境自然是不同的值。比较完善的方案是在项目中引入配置中心,将参数进行统一纳管,大多数参数修改后可以实时生效。
但是不是所有项目都适合引入配置中心,成本低简单一点的做法就是把配置文件外置化,不同环境维护不同的配置文件。
默认配置文件
众所周知,springboot项目默认的配置文件是application.properties/yml,springboot默认是加载jar包里claaspath目录下的配置文件,当我们需要将配置外置时,可以有几种做法:
- 直接放在和jar包同级目录下
- 在jar包同级创建config目录,然后把配置文件放在config目录下
- 自定义配置文件目录,比如conf,然后把配置文件放在conf目录下
方法1和2正常启动jar包就可以生效,对于方法3需要在启动时通过参数
--spring.config.location=./conf/application.yml
指定路径,绝对路径或者相对路径均可。
自定义配置文件
少数场景下,仅使用默认配置文件无法满足项目需求场景,需要再自定义配置文件,比如test.yml,同样的,springboot默认也是加载jar包里classpath下的test.yml文件。
这时候直接使用上面的3种方法均无法生效,需要在代码里增加PropertySource注解,指定外置的目录覆盖原有的classpath目录。例如:
@PropertySource(value = {"classpath:test.yml","file:./test,yml"},ignoreResourceNotFound = true)
另外,建议同步设置参数
ignoreResourceNotFound = true
保证当找不到指定外置的配置文件时不报错,仍然可加载jar包内的配置文件。