配置檔案
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;
總結
從上述可以看出幾點
- @ConfigurationProperties 批量注入配置檔案中的屬性,而@Value隻能一個個指定
- @ConfigurationProperties不支援EL表達式,@Value支援
@Value("#{11*2}")
- @ConfigurationProperties支援複雜類型封裝(Map之類),@Value不支援
總的來說,如果我們隻是在某個業務邏輯中需要擷取配置檔案的某個值,使用@Value;
如果我們專門建立了一個javaBean檔案來和配置檔案進行映射,我們就直接使用@ConfigurationProperties.