springboot項目打成jar包,默認讀取的classpath路徑下的配置文件,config.properties是自定義配置文件。
如果要把config.properties配置放在jar包外面,方便修改配置,
1.在啟動類或者配置類上添加@PropertySource注解,value參數配置掃描路徑,可以為多個,當ignoreResourceNotFound為true時,項目啟動的時,先從第一個路徑去找配置文件,如果找不到,再從第二個路徑去找,以此類推...
@Data @Component @ConfigurationProperties @PropertySource(value = {"classpath:config.properties","file:${spring.profiles.path}/config.properties"},ignoreResourceNotFound = true) public class ConfigBean { }
spring.profiles.path:config.properties文件所在的路,可以在application.yml配置,
不過為了方便,spring.profiles.path一般在jar包啟動的時候傳入:
java -jar xxx.jar --spring.profiles.path=xxx
這樣,jar啟動的時候根據傳入的參數去讀取自定義配置文件
springboot讀取外部配置文件的方法,如下優先級:
第一種是在執行命令的目錄下建config文件夾。(在jar包的同一目錄下建config文件夾,執行命令需要在jar包目錄下才行),然后把配置文件放到這個文件夾下。
第二種是直接把配置文件放到jar包的同級目錄。
第三種在classpath下建一個config文件夾,然后把配置文件放進去。
第四種是在classpath下直接放配置文件。
springboot默認是優先讀取它本身同級目錄下的一個config/application.properties 文件的。
在src/main/resources 文件夾下創建的application.properties 文件的優先級是最低的
所以springboot啟動讀取外部配置文件,只需要在外面加一層配置文件覆蓋默認的即可,不用修改代碼。