SpringBoot從yml配置檔案中讀常用引數值例項方法
SpringBoot現在基本上都是使用application-XXX.yml(生產環境為pro,開發測試環境為dev)來配置專案中的一些配置條件,在springboot中還可以通過從yml檔案中將yml中的資料直接讀取出來。
1.yml檔案(這裡設定引數的時候往往設定兩層字首,避免在呼叫的時候該屬性中的部分引數名與計算機中的某些名字衝突)
test: person: lastName: hello age: 18 boss: false birth: 2017/12/12 maps: {k1: v1,k2: 12} lists: - lisi - zhaoliu dog: name: 小狗 age: 12
2.在JavaBean中讀取引數值,並且將讀取出來的值賦予到指定的屬性上
/** * 將配置檔案中配置的每一個屬性的值,對映到這個元件中 * @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置檔案中相關的配置進行繫結; * prefix = "testdemo.person":配置檔案中哪個下面的所有屬性進行一一對映(yml檔案中的引數名要和JavaBean中的屬性名保持一致) * * 只有這個元件是容器中的元件,才能容器提供的@ConfigurationProperties功能; * */ @Component @ConfigurationProperties(prefix = "testdemo.person") public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private Map<String,Object> maps; private List<Object> lists; private Dog dog; }
3.pom.xml檔案中匯入依賴配置(注:這裡可能需要啟動一下專案,使之生效)
<!--匯入配置檔案處理器,配置檔案進行繫結就會有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
4.@value 註解獲取yml配置檔案中的資料,以及@Validated進行資料校驗
@Component @Validated public class Person { /** * <bean class="Person"> * <property name="lastName" value="字面量/${key}從環境變數、配置檔案中獲取值/#{SpEL}"></property> * <bean/> */ //lastName必須是郵箱格式 @Email @Value("${person.last-name}") private String lastName; @Value("#{11*2}") private Integer age; @Value("true") private Boolean boss; private Date birth; private Map<String,Object> maps; private List<Object> lists; private Dog dog;
5.@ConfigurationProperties(prefix = "person") 和 @value的區別
| | @ConfigurationProperties | @Value |
| ---------- |------------------------ | ------ |
| 功能 | 批量注入配置檔案中的屬性 | 一個個指定 |
| 鬆散繫結(鬆散語法) | 支援 | 不支援 |
| SpEL | 不支援 | 支援 |
| JSR303資料校驗 | 支援 | 不支援 |
| 複雜型別封裝 | 支援 | 不支援 |
6.總結
配置檔案yml還是properties他們都能獲取到值;
如果說,我們只是在某個業務邏輯中需要獲取一下配置檔案中的某項值,使用@Value;
如果說,我們專門編寫了一個javaBean來和配置檔案進行對映,我們就直接使用@ConfigurationProperties;
以上就是本次介紹的全部相關知識點,感謝大家的學習和對我們的支援。