Springboot引用外部配置文件

Spring boot 官方文檔html

官網對配置文件的說明

24.3 Application property files
SpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment:

A /config subdirectory of the current directory.
The current directory
A classpath /config package
The classpath root
The list is ordered by precedence (properties defined in locations higher in the list override those defined in

中文翻譯過來就是 這裏說了四種方式能夠把配置文件放到外部的。java

  • 第一種是在jar包的同一目錄下建一個config文件夾,而後把配置文件放到這個文件夾下;
  • 第二種是直接把配置文件放到jar包的同級目錄;
  • 第三種在classpath下建一個config文件夾,而後把配置文件放進去;
  • 第四種是在classpath下直接放配置文件。

這四種方式的優先級是從一到四一次下降的。 這四種方式的優先級是從一到四一次下降的。spring

因爲咱們是要從外部讀取文件,因此直接說前兩種。數據庫

看下文件目錄結構: 輸入圖片說明app

這裏的application.properties是咱們的配置文件,config是建立的另一個目錄,放的也是application.properties。ide

Display-1.0-SNAPSHOT.jar中能夠包含application.properties配置文件也能夠不包含。spring-boot

爲了驗證能夠在config中設置myname=name1,jar同級目錄中設置myname=name2,若是jar中包含配置文件,將其中設置成myname=name3。測試

直接使用指令啓動:url

java -jar Display-1.0-SNAPSHOT.jar

以後驗證可得知,咱們經過@Value(「${myname}」)獲取到的myname的值是name1,把config下的配置文件刪除後獲取的結果是name2,都刪除後纔會獲取jar包中配置文件的數據name3。spa

多配置文件化

另外若是咱們想要想配置測試、開發、生產環境同樣使用另一個配置文件怎麼來實現呢?

下面繼續,我把application.properties的信息修改以下:

spring.profiles.active=dev,host

配置文件目錄結構: 輸入圖片說明

我又新增了一個名爲application-host.properties的配置文件,同理也能夠把這個文件考出來放到jar包外面,同級目錄或者config下。

這樣項目啓動以後dev配置文件和host配置文件都會生效。 輸入圖片說明

這裏爲了突出其餘的配置文件我只把host的拷出來了,dev的仍是在jar包裏,application.properties配置文件放在jar中也同樣,咱們須要的主要是host的配置文件。

這樣每次修改的時候只須要修改配置文件信息,而後重啓項目就好,不須要從新打包。

若是想要只修改配置文件,不重啓項目就能生效,能夠考慮用java來讀取配置文件中的數據,把它看成一個普通文件來讀取,或者寫到其餘數據庫中也行。上面這些方案已經可以知足個人需求了,因此其餘的不在作了。

相關文章
相關標籤/搜索