天天看點

Spring Boot 從配置檔案中擷取屬性值的方法

配置檔案

person:
  lastName: zhangsan
  age: 18
  boss: false
  birth: 2019/07/25
  maps: {k1: v1,k2: v2}
  lists:
    - lisi
    - zhaoliu
    - wangwu
  dog:
    name: 小狗
    age: 2
           

我這邊呢,用的是yml格式的配置檔案

方法一 @ConfigurationProperties(prefix = “person”)

** 該注解呢,是用在實體類上,表示将配置檔案中配置的每一個屬性的值,映射到這個元件中需要搭配@Component使用,隻有這個元件是容器中的元件,才能容器提供的@ConfigurationProperties功能**

prefix屬性為配置檔案中哪個下面的所有屬性

方法二 @Value("${person.lastName}")

可以直接進行指派

@Value("#{11*2}") 或 @Value("true")

,也可以跟上文那樣,指定擷取的名稱

附上實體類代碼

@Component
//@ConfigurationProperties(prefix = "person")
public class Person {

    @Value("${person.lastName}")
    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;

           

總結

從上述可以看出幾點

  1. @ConfigurationProperties 批量注入配置檔案中的屬性,而@Value隻能一個個指定
  2. @ConfigurationProperties不支援EL表達式,@Value支援

    @Value("#{11*2}")

  3. @ConfigurationProperties支援複雜類型封裝(Map之類),@Value不支援

總的來說,如果我們隻是在某個業務邏輯中需要擷取配置檔案的某個值,使用@Value;

如果我們專門建立了一個javaBean檔案來和配置檔案進行映射,我們就直接使用@ConfigurationProperties.

繼續閱讀