天天看點

@Value擷取值和@ConfigurationProperties擷取值比較,資料校驗

1、@Value擷取值和@ConfigurationProperties擷取值比較

@ConfigurationProperties @Value
功能 批量注入配置檔案中的屬性 一個個指定
松散綁定(松散文法) 支援 不支援
SpEL 不支援 支援
JSR303資料校驗 支援 不支援
複雜類型封裝 支援 不支援

配置檔案yml還是properties他們都能擷取到值;

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

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

2、配置檔案注入值資料校驗

@Component
@ConfigurationProperties(prefix = "person")
@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;
           

繼續閱讀