1、SpringBoot多環境配置
1.1多環境配置的引入
在項目的整個研發過程中,同一個項目會面臨着不同的使用環境。使用環境的不同,需要的配置信息也會不同。例如:數據庫配置,在開發的時候,我們一般用測試數據庫,而在生產環境中,我們是使用正式的數據庫,如果在項目中只有一個application.properties(application.yml)一個配置文件的話,該文件中的屬性值會經常需要改動,就會使項目整體的體驗變得非常差,而且出錯率也極高。
這時候,我們可以使用profile在不同的環境下配置不同的配置文件,這樣一來,在SpringBoot項目中就出現了多環境的配置文件。
1.2多環境配置的設置
創建多環境配置文件時,需要遵循SpringBoot允許的命名約定來命名,格式為:application-{profile}.properties。
例如:
開發環境:application-dev.properties
生產環境:application-prod.properties
測試環境:application-test.properties
默認環境:application.properties
多環境配置文件和application.properties文件一樣可以放置在項目中四個位置任意一處
1.3多環境的切換
項目如何切換到其他環境的配置文件?
在application.properties中,設置spring.profiles.active來具體激活一個或者多個配置文件,如果沒有指定任何profile的配置文件的話,springboot默認會啟動application-default-default.properties(默認環境)。
例如:spring.profiles.active=dev
dev就是配置文件名中的名稱
開發環境。
1.4命令行設置屬性值
除了通過設置配置文件來修改屬性外,還可以通過命令行來修改屬性值。在命令行運行時,連續的兩個減號--就是對application.properties中的屬性值進行賦值的標識,所以,java-jar xxx.jar--server.port=8888命令等價於我們在application.properties中添加屬性server.port=8888。
通過命令行來修改屬性值確實比較便利,但是通過命令行就能更改應用運行的參數,對於項目的安全性構成了一定的威脅。所以SpringBoot框架中也提供了屏蔽命令行訪問屬性的設置,加入:SpringApplication.setAddCommandLineProperties(false)就可以屏蔽。


2、自定義屬性
SpringBoot可以在配置文件中修改默認約定的屬性值,還可以添加一些自己需要的屬性,也就是可以自定義一些屬性,這些自定義的屬性可以使用@Value注解將屬性值注入到beans中,或者使用@ConfigurationProperties注解將屬性值綁定到結構化的beans中。
2.1配置文件中的自定義屬性
自定義的屬性可以放到application.properties或者application.yml全局配置文件中,也可以自定義配置文件中定義。


2.2綁定屬性值
定義一個Student類需要添加@Component注解,讓spring在啟動的時候掃描到該類,並添加到spring容器中。給屬性綁定值,有兩種方法:
2.3@Value的使用
@Value注解可以綁定屬性值,但是只能綁定簡單類型的屬性值,通常用SpEL方式綁定。
例如:
1.


2.getter/setter方法+toString方法
3.在controller層添加:


必須使用@Autowired,自動注入,自己手動new沒有作用,不能綁定值。
4.啟動項目,在網頁運行頁面,然后在控制台會輸出


2.4@ConfigurationProperties的使用
@ConfigurationProperties用於批量的為屬性綁定值,可以用於任何數據類型,使用時需要指定配置文件的屬性前綴。


3、隨機數配置
SpringBoot支持在系統加載時配置隨機數,使用${random}可以生成各種不同類型的隨機值,從而簡化了代碼生成的麻煩,例如生成int值、long值、string字符串。
3.1定義隨機數


3.2綁定屬性值


3.3在Controller中添加




擴展:
使用@Value綁定復雜的數據類型,比如數組,集合
1.屬性文件


修改為


2.綁定

