最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot配置文件注入值的簡(jiǎn)單實(shí)現(xiàn)

 更新時(shí)間:2025年11月05日 09:18:21   作者:222you  
本文主要介紹了SpringBoot配置文件注入值的簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.yaml語(yǔ)法

k:(空格)v:表示一對(duì)鍵值對(duì)(空格必須有);

以空格的縮進(jìn)來(lái)控制層級(jí)關(guān)系;只要是左對(duì)齊的一列數(shù)據(jù),都是同一個(gè)層級(jí)的

例如:

server: 
  port: 8080
  path: /hello

值的寫(xiě)法:

字面量:普通的值(數(shù)字,字符串,布爾)

k: v:字面直接來(lái)寫(xiě);

字符串默認(rèn)不用加上單引號(hào)或者雙引號(hào);

"":雙引號(hào);不會(huì)轉(zhuǎn)義字符串里面的特殊字符;特殊字符會(huì)作為本身想表示的意思

name: "zhangsan \n lisi":輸出;zhangsan 換行 lisi

'':?jiǎn)我?hào);會(huì)轉(zhuǎn)義特殊字符,特殊字符最終只是一個(gè)普通的字符串?dāng)?shù)據(jù)

name: ‘zhangsan \n lisi’:輸出;zhangsan \n lisi

對(duì)象、Map(屬性和值)(鍵值對(duì)):

k: v:在下一行來(lái)寫(xiě)對(duì)象的屬性和值的關(guān)系;注意縮進(jìn)

對(duì)象還是k: v的方式

friends: 
  lastName: zhangsan
  age: 20

行內(nèi)寫(xiě)法:

friends: {lastName: zhangsan,age: 18}

數(shù)組(List,set):

用 - 值表示數(shù)字當(dāng)中的一個(gè)元素

pets: 
  - cat
  - dog
  - pig

行內(nèi)寫(xiě)法:

pets: [cat,dog,pig]

2.配置文件注入

1.@ConfigurationProperties注解注入

我們嘗試把配置文件當(dāng)中的值注入到bean里面:

實(shí)體類:

package com.qcby.domain;

import org.hibernate.validator.constraints.Email;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.*;


/**
  *把配置文件里的每一個(gè)值映射到這組件中
  *@ConfigurationProperties:告訴Spring把這個(gè)類中的所有屬性和配置文件中的配置綁定
  *perfix="person" 配置文件中person的所有屬性進(jìn)行一一映射
  */
@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;

    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;
    }

    public String getBirthString() {
        return birthString;
    }

    public void setBirthString(String birthString) {
        this.birthString = birthString;
    }

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

配置文件:

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

在Controller中返回這個(gè)對(duì)象:

    @Autowired
    private Person person;

    @GetMapping("/person")
    @ResponseBody
    public Person selectPerson(){
        return person;
    }

然后運(yùn)行啟動(dòng)類

2.@Value注解注入

package com.qcby.domain;

import org.hibernate.validator.constraints.Email;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.*;

@Component
//@ConfigurationProperties(prefix = "person")
public class Person {

    //直接賦值
    @Value("Hello")
    private String lastName;

    @Value("18")
    private Integer age;

    @Value("false")
    private Boolean boss;

    //Date類型用Value需要轉(zhuǎn)換
    @Value("2017/12/12")
    private String birthString;
    private Date birth;


    //要手動(dòng)初始化(創(chuàng)建對(duì)象)
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;


    // 使用 @PostConstruct 在 Bean 初始化后處理復(fù)雜類型
    @PostConstruct
    public void init() {
        //處理 Date 類型
        try {
            this.birth = new Date(birthString);
        } catch (Exception e) {
            this.birth = new Date(); // 默認(rèn)當(dāng)前時(shí)間
        }

        // 初始化 Map
        this.maps = new HashMap<>();
        maps.put("k1", "v1");
        maps.put("k2", "v2");

        //初始化 List
        this.lists = Arrays.asList("lisi", "zhaoliu");

        //創(chuàng)建 Dog 對(duì)象
        this.dog = new Dog();
        dog.setName("小狗112312");
        dog.setAge(12);
    }

    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;
    }

    public String getBirthString() {
        return birthString;
    }

    public void setBirthString(String birthString) {
        this.birthString = birthString;
    }

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

@Value后面的括號(hào)里的值可以直接對(duì)這些屬性賦值:
1513008000000 是一個(gè)時(shí)間戳,表示從 1970年1月1日 00:00:00 UTC 到指定時(shí)間的毫秒數(shù)

value也可以使用占位符來(lái)獲取配置文件里面的值:

package com.qcby.domain;

import org.hibernate.validator.constraints.Email;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.*;

@Component
public class Person {


    @Value("${person.lastName:Hello1231}")
    private String lastName;

    @Value("${person.age:183}")
    private Integer age;

    @Value("${person.boss:true}")
    private Boolean boss;

    @Value("${person.birth:2016/12/31}")
    //Date類型用Value需要轉(zhuǎn)換
    private String birthString;
    private Date birth;


    //要手動(dòng)初始化(創(chuàng)建對(duì)象)
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;


    // 使用 @PostConstruct 在 Bean 初始化后處理復(fù)雜類型
    @PostConstruct
    public void init() {
        //處理 Date 類型
        try {
            this.birth = new Date(birthString);
        } catch (Exception e) {
            this.birth = new Date(); // 默認(rèn)當(dāng)前時(shí)間
        }

        // 初始化 Map
        this.maps = new HashMap<>();
        maps.put("k1", "v1");
        maps.put("k2", "v2");

        //初始化 List
        this.lists = Arrays.asList("lisi", "zhaoliu");

        //創(chuàng)建 Dog 對(duì)象
        this.dog = new Dog();
        dog.setName("小狗112312");
        dog.setAge(12);
    }

    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;
    }

    public String getBirthString() {
        return birthString;
    }

    public void setBirthString(String birthString) {
        this.birthString = birthString;
    }

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

區(qū)別:

3.@PropertySource

@PropertySource可以加載指定的配置文件

package com.qcby.domain;

import org.hibernate.validator.constraints.Email;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.*;

@PropertySource("classpath:person.properties")
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Boolean boss;
    private String birthString;
    private Date birth;


    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;
    }

    public String getBirthString() {
        return birthString;
    }

    public void setBirthString(String birthString) {
        this.birthString = birthString;
    }

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

想讓person.properties生效的話,要先把a(bǔ)pplication.yaml文件中有關(guān)person的配置去掉,因?yàn)閍pplication.yaml讀取優(yōu)先級(jí)更高,高優(yōu)先級(jí)的配置會(huì)覆蓋低優(yōu)先級(jí)的配置

person.lastName=1222222222222222222222222222
person.age=${random.int(10)}
person.boss=true
person.birthString=2017/12/10
person.birth=2017/12/10
person.maps.k1=v1
person.maps.k2=v2
person.lists[0]=lisi
person.lists[1]=zhaoliu
person.dog.name=大狗
person.dog.age=12

3.配置類注入

想讓Spring的配置文件生效,我們可以在配置類上使用@ImportResource注解

package com.qcby.config;

import com.qcby.domain.HelloService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//指明是一個(gè)配置類,代替之前的Spring配置文件
@Configuration
public class MyConfiguration {

    @Bean
    public HelloService helloService(){
        System.out.println("配置類給容器添加組件了.......");
        return new HelloService();
    }
}

到此這篇關(guān)于SpringBoot配置文件注入值的簡(jiǎn)單實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Springboot配置文件值注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java-JFrame窗體美化方式

    Java-JFrame窗體美化方式

    這篇文章主要介紹了Java-JFrame窗體美化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Spring Boot整合EhCache的步驟詳解

    Spring Boot整合EhCache的步驟詳解

    EhCache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,具有快速、精干等特點(diǎn),是Hibernate中默認(rèn)CacheProvider。這篇文章主要介紹了Spring Boot整合EhCache的步驟詳解,需要的朋友可以參考下
    2020-02-02
  • SpringBoot集成Redis實(shí)現(xiàn)驗(yàn)證碼的簡(jiǎn)單案例

    SpringBoot集成Redis實(shí)現(xiàn)驗(yàn)證碼的簡(jiǎn)單案例

    本文主要介紹了SpringBoot集成Redis實(shí)現(xiàn)驗(yàn)證碼的簡(jiǎn)單案例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java虛擬機(jī)JVM優(yōu)化實(shí)戰(zhàn)的過(guò)程全記錄

    Java虛擬機(jī)JVM優(yōu)化實(shí)戰(zhàn)的過(guò)程全記錄

    有人說(shuō)Java之所以能夠崛起,JVM功不可沒(méi)。Java虛擬機(jī)最初服務(wù)于讓Java語(yǔ)言凌駕于平臺(tái)之上,實(shí)現(xiàn)“編寫(xiě)一次,到處運(yùn)行”,那么下面這篇文章主要給大家分享了個(gè)關(guān)于Java虛擬機(jī)JVM優(yōu)化實(shí)戰(zhàn)的過(guò)程全記錄,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • 使用Java實(shí)現(xiàn)一個(gè)功能完整的圖片水印工具

    使用Java實(shí)現(xiàn)一個(gè)功能完整的圖片水印工具

    在日常開(kāi)發(fā)中,我們經(jīng)常需要給圖片添加水印,比如版權(quán)保護(hù)、品牌展示等場(chǎng)景,所以本文將介紹一個(gè)功能完整的Java圖片水印工具,支持文字水印和圖片水印,需要的朋友可以參考下
    2026-02-02
  • Spring Boot中定時(shí)任務(wù)Cron表達(dá)式的終極指南最佳實(shí)踐記錄

    Spring Boot中定時(shí)任務(wù)Cron表達(dá)式的終極指南最佳實(shí)踐記錄

    本文詳細(xì)介紹了SpringBoot中定時(shí)任務(wù)的實(shí)現(xiàn)方法,特別是Cron表達(dá)式的使用技巧和高級(jí)用法,從基礎(chǔ)語(yǔ)法到復(fù)雜場(chǎng)景,從快速啟用到調(diào)試驗(yàn)證,再到常見(jiàn)問(wèn)題的解決,涵蓋了定時(shí)任務(wù)開(kāi)發(fā)的全過(guò)程,感興趣的朋友一起看看吧
    2025-03-03
  • Java中List集合的常用方法詳解

    Java中List集合的常用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java中List集合的常用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • SpringBoot通過(guò)Nginx代理獲取真實(shí)IP

    SpringBoot通過(guò)Nginx代理獲取真實(shí)IP

    springboot作為后臺(tái)代碼,獲取到的登錄IP是前臺(tái)的代理服務(wù)器地址,并不是用戶的真實(shí)IP地址,本文主要介紹了SpringBoot通過(guò)Nginx代理獲取真實(shí)IP,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Spring自動(dòng)裝配bean的方式總結(jié)

    Spring自動(dòng)裝配bean的方式總結(jié)

    這篇主要介紹了Spring自動(dòng)裝配Bean的方式總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2024-01-01
  • SpringSecurity的@EnableWebSecurity注解詳解

    SpringSecurity的@EnableWebSecurity注解詳解

    這篇文章主要介紹了SpringSecurity的@EnableWebSecurity注解詳解,@EnableWebSecurity是開(kāi)啟SpringSecurity的默認(rèn)行為,它的上面有一個(gè)Import注解導(dǎo)入了WebSecurityConfiguration類,就是往IOC容器中注入了WebSecurityConfiguration這個(gè)類,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

双城市| 波密县| 鄂州市| 平阴县| 林口县| 高碑店市| 泰顺县| 霞浦县| 叙永县| 泰顺县| 临泽县| 南召县| 讷河市| 祁门县| 若尔盖县| 罗源县| 儋州市| 宜良县| 五台县| 玉山县| 洪湖市| 潼南县| 游戏| 福建省| 临西县| 梅河口市| 绩溪县| 城固县| 噶尔县| 雅江县| 合山市| 盘锦市| 宣威市| 浦东新区| 紫云| 申扎县| 云梦县| 昭觉县| 中宁县| 南丰县| 奎屯市|