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;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM