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來讀取配置文件中的數據,把它看成一個普通文件來讀取,或者寫到其餘數據庫中也行。上面這些方案已經可以知足個人需求了,因此其餘的不在作了。