1.配置文件中使用隨機數java
>在Spring boot的屬性配置文件中,能夠經過使用${random}配置來產生隨機的int值,long值,或者 string字符串。 例: 隨機字符串:value=${random.value} 隨機int: value=${random.int}, 隨機long : value=${ramdom.long} 10之內的隨機數: value=${random.int(10)} 10-20的隨機數: value = ${random.int\[10,20\]} 應用場景:該配置方式能夠設置應用端口等場景,以免在本地調試出現端口衝突的麻煩。
3.命令行參數spring
>1.java -jar xxx.jar --server.port=8888 ,直接以命令行的方式來設置server.port屬性,並將啓動應用的端口設置爲8888. 注:在命令行方式啓動Spring Boot應用時,連續的兩個減號 -- 就是對application.properties 中的屬性值進行賦值的標識。 經過命令行來修改屬性值是SpringBoot很是重要的一個特性。經過次特性,理論上已經使得應用的屬性在啓動前是可變的,因此其中的端口也好,數據庫鏈接也好,都是能夠在應用啓動的時候發生改變的。而不一樣於以往的Spring應用經過Maven的Profile在編譯器中進行不一樣環境的構建。可是,若是每一個參數都須要經過命令行來制定,這顯然不是一個最佳方案,因此有了多環境配置。
4.多環境配置數據庫
>對於多環境的配置,各類項目構建工具或是框架的基本思路是一致的,經過配置多份不一樣環境的配置文件,再經過打包命令指定須要打包的內容以後進行區分打包。 在Spring Boot中,多環境配置的文件名須要知足 application-{profile}.properties 其中{profile}對應你的環境標識,以下: application-dev.properties //開發環境 application-test.properties //測試環境 application-prod.properties //生產環境 至於具體哪一個配置文件會被加載,須要在application.properties文件中經過spring.profiles.active屬性來設置,其值對應配置文件中的{profile}值。如spring.profiles.active=test 就會加載application-test.properties配置文件內容。 注:這裏執行java -jar 命令的時候,就能夠用Spring Boot的命令行參數更改屬性值的方式來不一樣的環境配置文件。
5.Spirng Boot中的屬性的加載順序:app
>1.在命令行中傳入的參數。 2.SPRING_APPLICATION_JSON中的屬性SPRING_APPLICATION_JSON是以JSON格式配置在系統環境變量中的內容。 3.java:com/env 中的JNDI屬性。 4.Java的系統屬性,能夠經過System。getProperties()得到的內容. 5.操做系統的環境變量. 6.經過random.*配置的隨機屬性。 7.位於當前應用jar包以外,針對不一樣{profile}環境的配置文件內容,例如,application-{profile}.properties或是YAML定義的配置文件。 8.位於當前應用jar包以內,針對不一樣{profile}環境的配置文件內容,例如,application-{profile}.properties或是YAML定義的配置文件。 9.位於當前應用jar包以外的applicatiion.properties和YAML配置內容。 10.位於當前應用jar包以內的application.properties和YAML配置內容。 11.在@Configuration註解修改的類中,經過@PropertySource註解定義的屬性。 12.應用默認屬性,使用SpringApplication.setDefaultProperties定義的內容。 優先級按上面的順序由高到低,數字越小優先級越高。 能夠看到,其中第七項和第九項都是從應用jar包以外讀取配置文件,因此實現外部化配置的原理就是今後切入,爲其指定外部配置文件的加載換位置來取代jar包以內的配置內容。經過這樣的實現,咱們的工做在配置中就變得很是乾淨,只需在本地放置開發須要的配置便可,而不用關心其餘環境的配置,由其對應環境的負責人去維護便可。