欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解

 更新時(shí)間:2021年09月16日 10:22:53   作者:陽(yáng)光下的米雪  
本文主要介紹了SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

注解@ConfigurationProperties

該注解的作用是將配置文件中配置的每一個(gè)屬性的值,映射到這個(gè)組件中。@ConfigurationProperties :告訴springboot將本類(lèi)中的所有屬性和配置文件中相關(guān)的配置進(jìn)行綁定 prefix = “person”:配置文件中哪個(gè)下面的所有屬性進(jìn)行一一映射。簡(jiǎn)言之,也就是只有這個(gè)組件是容器中的組件;才能在容器中提供的@ConfigurationProperties功能。

注解@Value

該注解就是將配置文件中的某項(xiàng)值讀出來(lái),@Value("$(key)"),其中key的值從環(huán)境變量、配置文件中獲取值

區(qū)別

該表格展示了這兩個(gè)注解的區(qū)別,其中,松散語(yǔ)法綁定的定義如下:

松散語(yǔ)法綁定:

  • - person.firstName : 使用標(biāo)準(zhǔn)方法
  • - person.first-name : 大寫(xiě)用-
  • - person.first_name : 大寫(xiě)用_
  • - PERSON_FIRST_NAME : 推薦系統(tǒng)屬性使用這種寫(xiě)法

SpEl語(yǔ)法表示:

其中,@Value可以直接計(jì)算表達(dá)式的值,如:@Value(#{11*2})

JSR303數(shù)據(jù)校驗(yàn):

注解@ConfigurationProperties(prefix = "person")可以搭配@Validated使用

復(fù)雜類(lèi)型封裝:

支持讀入類(lèi)中的所有屬性,比如,想讀如person中的所有屬性,使用@ConfigurationProperties(prefix = "person")

# 配置person的值
person.last-name=zhangsan
person.age=18
person.birth=2017/12/12
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,v
person.dog.name=二哈
person.dog.age=2

使用方法區(qū)別:

配置文件無(wú)論是yml還是properties他們都能獲取
如果說(shuō),我們只是說(shuō)在某個(gè)業(yè)務(wù)邏輯中需要獲取一下配置文件中的某項(xiàng)值,就使用@Value
如果說(shuō),我們專(zhuān)門(mén)編寫(xiě)了一個(gè)javaBean來(lái)和配置文件映射,我們就直接使用

配置文件注入值數(shù)據(jù)校驗(yàn)

注入值校驗(yàn)主要用的是@Validated注解,像代碼中private String lastName;可以使用@Email,雖然使用姓名使用郵件格式可能不太合適,此處只是為了舉例子,意思是lastName必須是郵箱格式

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
    /**
     * <bean class="Person">
     *     <property name="lastNme" value="字面量/${key}從環(huán)境變量、配置文件中獲取值/#{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;

//    @Value("${person.maps}")
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Boolean getBoss() {
        return boss;
    }

    public void setBoss(Boolean boss) {
        this.boss = boss;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "lastName='" + lastName + '\'' +
                ", age=" + age +
                ", boss=" + boss +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }
}

到此這篇關(guān)于SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解的文章就介紹到這了,更多相關(guān)SpringBoot @ConfigurationProperties @Value內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論