當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot_配置-外部配置加载顺序
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot_配置-外部配置加载顺序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
接下來我們再來看SpringBoot的一個特點,外部配置的加載順序,也就是說,SpringBoot我們要寫一些配置,配置可以寫在我們的配置文件,application.properties,放到類路徑下,我們不僅可以在這里配置,還可以從這些位置加載配置,我們把配置寫在這些位置,也是可以的,詳細能夠寫在哪些位置呢,我這里有列舉11個,但是官方文檔
Externalized Configuration,有一個外部配置,官方文檔列舉了17個https://docs.spring.io/spring-boot/docs/1.5.22.RELEASE/reference/html/boot-features-external-config.htmlDevtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
@TestPropertySource annotations on your tests.
@SpringBootTest#properties annotation attribute on your tests.
Command line arguments.
Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)
ServletConfig init parameters.
ServletContext init parameters.
JNDI attributes from java:comp/env.
Java System properties (System.getProperties()).
OS environment variables.
A RandomValuePropertySource that only has properties in random.*.
Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)
Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)
Application properties outside of your packaged jar (application.properties and YAML variants).
Application properties packaged inside your jar (application.properties and YAML variants).
@PropertySource annotations on your @Configuration classes.
Default properties (specified using SpringApplication.setDefaultProperties).這些其實都太多了,其實你只要關注我紅顏色這幾個,我提取出的這個個可以看一下,SPRING BOOT,也可以從以下位置加載配置,是按照優先級從高到低,也就是說,高優先級的配置覆蓋低優先級的配置,所有的配置會形成互補配置,記住這句話就行了,那我們主要來看這幾個位置,比如第一個我們可以放到命令行參數上,這個是什么意思呢,來給大家舉個例子
我們這個應用在打包的時候,我們來把這個應用來打一個包,如果我們在打包的時候呢,我們要打包完成以后,我們來訪問這個項目,關鍵打包的時候呢,只會識別main,java,resources下的一些東西,我用java -jar的命令,我們來執行這個jar包,如果我們默認來執行,他就會找到config下的8082端口,從而以8082端口來啟動,并且跟他形成互補配置,訪問boot02,沒什么問題,但是某一天我想改一下服務端的端口號,那我們得寫一個配置文件再來改,這也太麻煩了,我在執行命令的時候,我們可以使用命令的方式,我寫一個服務器的端口號,我來給他指定8087java -jar .... --server.port=8087我來指定他
看看他是什么端口啟動呢,我們發現他就是8087端口了,命令行的優先級別,我們里邊的配置文件,默認我們還配了訪問名,我們可以使用命令行修改spring boot的默認配置,我們在命令行的時候加上他,我們以前命令行配置也演示了很多,特別是spring.config.location,指定配置文件位置的,我們可以加載來自JNDI的,或者JAVA虛擬機的系統屬性,包括也可以是環境變量,主要看下面這幾個,jar包外的帶profile的,jar包內的加profile的,這四個我們就總結成兩個,首先是優先加載帶profile的,如果我們指定了這個環境,那他就優先加載帶profile的,不管是jar包外帶的還是jar內帶的,再來加載,不帶profile的,但是不管怎么加載,都是由jar外向jar包內進行尋找,然后高優先級的配置,覆蓋低優先級的配置,這個也是非常有用的
命令行的多個參數怎么區分,我們可以直接用空格,來指定第二個參數,比如server.context-path,比如我們就叫abc,這種方式是可以的
如果我們要啟動應用,要改配置,我們可以在命令行里邊把我們所有的配置,都改掉,來啟動,他一定是從8087端口啟動,包括項目啟動路徑也會叫abc,現在訪問boot02就不行了,我們訪問abc,現在是可以的,我們所有的參數都可以按照優先級,都來指定到命令行,多個配置用空格分開,--配置項=值,這是我們第一種命令行參數,但如果太多了我們來這么指定,然后我就可以這么來做,我們第一個命令行參數,這是非常重要的,第二個我們可以從jar包外部來加載,profile我們也說過了,可以簡單演示一下,可以用@Configuration注解類上@PropertyResource專門引用的配置文件,而我們實際的所有加載來源,詳細就來看我們的官方文檔,有這么多,這個東西太多了,我們實際用不到這么多,參考官方文檔https://docs.spring.io/spring-boot/docs/1.5.22.RELEASE/reference/html/boot-features-
external-config.html這是我們所有的配置加載來源,但是記住一句話,Springboot可以從這些位置來加載配置,優先級從高到低,然后高優先覆蓋低優先,所有合起來形成互補配置,這就是我們的總結
?
總結
以上是生活随笔為你收集整理的SpringBoot_配置-外部配置加载顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot_配置-配置文件的加
- 下一篇: SpringBoot_配置-自动配置原理