亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Springboot中如何通過(guò)yml為實(shí)體類(lèi)注入屬性

 更新時(shí)間:2022年05月05日 10:08:50   作者:一個(gè)小年輕  
這篇文章主要介紹了Springboot中如何通過(guò)yml為實(shí)體類(lèi)注入屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

延伸:以后除了可以為實(shí)體類(lèi)注入屬性,還可以為配置類(lèi)注入相關(guān)的配置信息

1.編寫(xiě)實(shí)體類(lèi)

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
    @Override
    public String toString() {
        return "Person{" +
                "lastName='" + lastName + '\'' +
                ", age=" + age +
                ", boss=" + boss +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", 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;
    }
}
  • @Component 表示將當(dāng)前類(lèi)的創(chuàng)建工作交給Spring容器管理
@ConfigurationProperties(prefix = “person”) 

用于表示該類(lèi)需要讀取的配置信息,prefix用于指示讀取哪一個(gè)配置信息

Person類(lèi)依賴(lài)了一個(gè)Dog類(lèi),如下:

public class Dog {
    private String name;
    private Integer age;
    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

2.編寫(xiě)yml文件

@ConfigurationProperties(prefix = “person”)

Person類(lèi)的這個(gè)注解就會(huì)去找yml中對(duì)應(yīng)的配置信息

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

3.測(cè)試

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootQuickStartApplicationTests {
? ? @Autowired
? ? Person person;
? ? @Test
? ? public void demo1() {
? ? ? ? System.out.println(person);
? ? }
}

4.結(jié)果 

注意:有可能中文在這個(gè)地方打印會(huì)出現(xiàn)亂碼,原因是yml的編碼和java文件的編碼不一樣導(dǎo)致,我們需要將其配成一致的編碼,如都設(shè)置成utf-8。

5.可以不用@ConfigurationProperties(prefix = “person”)注解方式

使用@Value的方式注入屬性值

@Value注解等價(jià)于:

以三個(gè)屬性字段為例

我們既可以從配置文件取值,也可以通過(guò)字面量直接賦值,當(dāng)屬性值少的時(shí)候這種方式特別方便。

    @Value("${person.lastName}")
    private String lastName;
    @Value("${person.age}")
    private Integer age;
    @Value("true")
    private Boolean boss;

效果如下,由于只注入了三個(gè)屬性,其余屬性則為空

6.@ConfigurationProperties(prefix = “person”)

默認(rèn)是從主配置文件中讀取相關(guān)信息,我們可以使用

@PropertySource(value = {“配置文件的路徑”})

來(lái)指定需要讀取的配置文件

6.1寫(xiě)一個(gè)dog.properties配置Dog類(lèi)的相關(guān)配置信息

dog.name=puppy
dog.age=24

6.2為Dog類(lèi)注入屬性

@PropertySource(value = {"classpath:dog.properties"})
@Component
@ConfigurationProperties(prefix = "dog")
public class Dog {
    private String name;
    private Integer age;

6.3效果

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 很多人竟然不知道Java線(xiàn)程池的創(chuàng)建方式有7種

    很多人竟然不知道Java線(xiàn)程池的創(chuàng)建方式有7種

    本文主要介紹了很多人竟然不知道Java線(xiàn)程池的創(chuàng)建方式有7種,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Spring基于注解配置AOP詳解

    Spring基于注解配置AOP詳解

    這篇文章主要介紹了Spring基于注解配置AOP詳解,Spring 的 AOP 功能是基于 AspectJ 實(shí)現(xiàn)的,支持使用注解聲明式定義 AOP 切面,Spring 基于注解配置 AOP 需要啟用 AspectJ 自動(dòng)代理功能,需要的朋友可以參考下
    2023-09-09
  • Java OpenCV圖像處理之仿射變換,透視變換,旋轉(zhuǎn)詳解

    Java OpenCV圖像處理之仿射變換,透視變換,旋轉(zhuǎn)詳解

    這篇文章主要為大家詳細(xì)介紹了Java OpenCV圖像處理中仿射變換,透視變換,旋轉(zhuǎn)的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),快跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • Centos6.5下Jdk+Tomcat+Mysql環(huán)境安裝圖文教程

    Centos6.5下Jdk+Tomcat+Mysql環(huán)境安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Centos6.5系統(tǒng)下Jdk+Tomcat+Mysql環(huán)境安裝過(guò)程,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 如何使用hutool做本地緩存的工具類(lèi)

    如何使用hutool做本地緩存的工具類(lèi)

    這篇文章主要介紹了如何使用hutool做本地緩存的工具類(lèi),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解Spring Boot中MyBatis的使用方法

    詳解Spring Boot中MyBatis的使用方法

    mybatis初期使用比較麻煩,需要各種配置文件、實(shí)體類(lèi)、dao層映射關(guān)聯(lián)、還有一大推其它配置。當(dāng)然mybatis也發(fā)現(xiàn)了這種弊端。下面通過(guò)本文給大家詳細(xì)介紹Spring Boot中MyBatis的使用方法,感興趣的朋友一起看看吧
    2017-07-07
  • 解析Java按值傳遞還是按引用傳遞

    解析Java按值傳遞還是按引用傳遞

    這篇文章主要介紹了解析Java按值傳遞還是按引用傳遞,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • LambdaQueryWrapper與QueryWrapper的使用方式

    LambdaQueryWrapper與QueryWrapper的使用方式

    這篇文章主要介紹了LambdaQueryWrapper與QueryWrapper的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Mac上配置JDK?1.8的超詳細(xì)流程

    Mac上配置JDK?1.8的超詳細(xì)流程

    相信每個(gè)拿到MAC的小伙伴都是很欣喜的,但是由于MAC系統(tǒng)與WIN系統(tǒng)有著極大的不同,所以使用起來(lái)會(huì)有一些小困擾,這篇文章主要給大家介紹了關(guān)于Mac上配置JDK?1.8的超詳細(xì)流程,需要的朋友可以參考下
    2023-11-11
  • Java后端WebSocket的Tomcat實(shí)現(xiàn)

    Java后端WebSocket的Tomcat實(shí)現(xiàn)

    這篇文章主要介紹了Java后端WebSocket的Tomcat實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論