springboot @value和@configurationproperties注解的區別


 

  @ConfigurationProperties @value
功能 批量注入配置文件中的屬性 一個個指定
松散綁定(松散語法) 支持 不支持
SpEL 不支持 支持
JSR303數據校驗 支持 不支持
復雜類型封裝 支持 不支持

 

 

所謂松散語法也就是屬性命名規則(Relaxed binding)

- person.firstName:使用標准方式
- person.first-name:大寫用-         
- person.first_name:大寫用_
- PERSON_FIRST_NAME: 系統屬性推薦使用這種寫法

@ConfigurationProperties支持松散語法         @Value不支持松散語法

application.properties文件中有字段 persion.first-name

@Component
@ConfigurationProperties(prefix = "person") public class Person { private String firstName;
}

 

JSR303數據校驗(@Validation)

@ConfigurationProperties @Validated 支持      @Value不支持

import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.Email;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;

@ConfigurationProperties
@Validated
public class Properties {

    @NotNull
    private String userName;
    
    @Email
    private String email;
    
}

 

SpEl

@ConfigurationProperties不支持EL表達式

application.properties文件中有字段 person.userAge=12 

userAge = 12   //可以
userAge = #{2*6}  //EL表達式不支持

 

@Value支持EL表達式

@Value(userAge=#{2*6}) //支持EL表達式

 

使用原則:在某個業務邏輯中需要獲取一下配置文件中的某項值,使用@Value;如果專門編寫了一個javaBean來和配置文件進行映射,我們就直接使用@ConfigurationProperties;

 


免責聲明!

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



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