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

SpringBoot如何配置文件給bean賦值問題

 更新時(shí)間:2024年05月16日 09:24:35   作者:鍵盤都敲壞了  
這篇文章主要介紹了SpringBoot如何配置文件給bean賦值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

方式一、使用yaml文件對(duì)bean進(jìn)行注入

案例

(先來兩個(gè)實(shí)體類做為案例測(cè)試用)

  • Car類
 
@Component
public class Car {
 
    String name;
    String pinpai;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getPinpai() {
        return pinpai;
    }
 
    public void setPinpai(String pinpai) {
        this.pinpai = pinpai;
    }
 
    public Car(String name, String pinpai) {
        this.name = name;
        this.pinpai = pinpai;
    }
 
    public Car() {
    }
 
    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", pinpai='" + pinpai + '\'' +
                '}';
    }
}
  • Person類
//此注解通過application.yaml里的person來注入?yún)?shù)
@ConfigurationProperties(prefix = "person")
@Component
@ConfigurationProperties(prefix = "person") //通過application.yaml里的person來注入?yún)?shù)
public class Person {
 
     String name;
    String age;
    String idcard;
    Map map;
    List list;
    Car car;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getAge() {
        return age;
    }
 
    public void setAge(String age) {
        this.age = age;
    }
 
    public String getIdcard() {
        return idcard;
    }
 
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
 
    public Map getMap() {
        return map;
    }
 
    public void setMap(Map map) {
        this.map = map;
    }
 
    public List getList() {
        return list;
    }
 
    public void setList(List list) {
        this.list = list;
    }
 
    public Car getCar() {
        return car;
    }
 
    public void setCar(Car car) {
        this.car = car;
    }
 
    public Person(String name, String age, String idcard, Map map, List list, Car car) {
        this.name = name;
        this.age = age;
        this.idcard = idcard;
        this.map = map;
        this.list = list;
        this.car = car;
    }
 
    public Person() {
    }
 
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", idcard='" + idcard + '\'' +
                ", map=" + map +
                ", list=" + list +
                ", car=" + car +
                '}';
    }
}

application.yaml里的代碼:

(注意一點(diǎn)的是yaml文件必須以application命名才能被springboot識(shí)別)

person:
  name: zhangsan
  age: 20
  idcard: 342115454
  map: {key: 1,key2: 2}
  list:
    - java
    - html
    - js
    - css
  car:
    name: 21款小奔奔
    pinpai: 國(guó)產(chǎn)汽車
  • yaml配置文件嚴(yán)格遵守層級(jí)關(guān)系,以及冒號(hào)后需要有一個(gè)空格
  • yaml文件中對(duì)于Map類型的賦值,最為方便的則是{key: value}形式
  • List類型的賦值 則是可以通過(- 值)的方式類賦值 也可以通過list: [值1,值2,值3]的方式,根據(jù)個(gè)人喜好選擇
  • yaml文件中的key名必須和封裝的實(shí)體類對(duì)象的屬性名一致,否則無法注入

測(cè)試輸出的信息為:

person{
    name='zhangsan', age='20', idcard='342115454', 
    map={key=1, key2=2}, list=[java, html, js, css],
    car=Car{name='21款小奔奔', pinpai='國(guó)產(chǎn)汽車'}
}

甚至還能玩的更花樣一點(diǎn):

person:
  name: zhangsan
  #在20后面加上隨機(jī)的int整數(shù)
  age: 20${random.int}
  #隨機(jī)生成的long的整數(shù)
  idcard: ${random.long}
  map: {key: 1,key2: 2}
  check: 大奔奔汽車
  list:
    - java
    - html
    - js
    - css
  car:
    name: 21款小奔奔
    #判斷person中的key名為check的值是否存在,如果存在則注入person.check的值,不存在則注入小奔奔汽車
    pinpai: ${person.check:小奔奔汽車}

方式二、使用自定義配置文件對(duì)bean進(jìn)行注入

案例

(還是先來兩個(gè)實(shí)體類做為案例測(cè)試用)

  • Car類
@Component
public class Car1 {
 
    String name;
    String pinpai;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getPinpai() {
        return pinpai;
    }
 
    public void setPinpai(String pinpai) {
        this.pinpai = pinpai;
    }
 
    public Car1(String name, String pinpai) {
        this.name = name;
        this.pinpai = pinpai;
    }
 
    public Car1() {
    }
 
    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", pinpai='" + pinpai + '\'' +
                '}';
    }
}
  • Person類:
//javaConfig 綁定配置文件的值
//加載指定路徑的配置文件  myconfig.properties
@PropertySource(value = "classpath:myconfig.properties")

再通過@Value("${key名}")來注入 ,key名則是配置文件中的key

@Component
//javaConfig 綁定配置文件的值
//加載指定配置文件
@PropertySource(value = "classpath:myconfig.properties")
public class Person1 {
 
    //SPEL表達(dá)式取出值
    @Value("${name}")
    String name;
    String age;
    String idcard;
    Map map;
    List list;
    Car1 car1;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getAge() {
        return age;
    }
 
    public void setAge(String age) {
        this.age = age;
    }
 
    public String getIdcard() {
        return idcard;
    }
 
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
 
    public Map getMap() {
        return map;
    }
 
    public void setMap(Map map) {
        this.map = map;
    }
 
    public List getList() {
        return list;
    }
 
    public void setList(List list) {
        this.list = list;
    }
 
    public Car1 getCar() {
        return car1;
    }
 
    public void setCar(Car1 car1) {
        this.car1 = car1;
    }
 
    public Person1(String name, String age, String idcard, Map map, List list, Car1 car1) {
        this.name = name;
        this.age = age;
        this.idcard = idcard;
        this.map = map;
        this.list = list;
        this.car1 = car1;
    }
 
    public Person1() {
    }
 
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", idcard='" + idcard + '\'' +
                ", map=" + map +
                ", list=" + list +
                ", car=" + car1 +
                '}';
    }
}

自定義配置文件myconfig.properties的代碼:

只做其中兩個(gè)參數(shù)的案例

name=zhangsan
age=22

測(cè)試輸出的信息為:

Person{name='zhangsan', age='22', idcard='null', map=null, list=null, car=null}

總結(jié)

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

相關(guān)文章

  • mybatis的foreach標(biāo)簽語法報(bào)錯(cuò)的解決

    mybatis的foreach標(biāo)簽語法報(bào)錯(cuò)的解決

    這篇文章主要介紹了mybatis的foreach標(biāo)簽語法報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring—@Value在static中引用方式

    Spring—@Value在static中引用方式

    這篇文章主要介紹了Spring—@Value在static中引用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 詳解java枚舉用法及實(shí)例

    詳解java枚舉用法及實(shí)例

    這篇文章主要介紹了Java枚舉詳解及使用實(shí)例,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2017-04-04
  • @RequestBody獲取不到參數(shù)的問題

    @RequestBody獲取不到參數(shù)的問題

    這篇文章主要介紹了@RequestBody獲取不到參數(shù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring Boot 項(xiàng)目做性能監(jiān)控的操作流程

    Spring Boot 項(xiàng)目做性能監(jiān)控的操作流程

    這篇文章主要介紹了Spring Boot 項(xiàng)目如何做性能監(jiān)控,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java數(shù)據(jù)結(jié)構(gòu)常見幾大排序梳理

    Java數(shù)據(jù)結(jié)構(gòu)常見幾大排序梳理

    Java常見的排序算法有:直接插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序等。本文詳解介紹它們的實(shí)現(xiàn)以及圖解,需要的可以參考一下
    2022-03-03
  • java連接orcale數(shù)據(jù)庫示例分享

    java連接orcale數(shù)據(jù)庫示例分享

    這篇文章主要介紹了java連接orcale數(shù)據(jù)庫示例,需要的朋友可以參考下
    2014-02-02
  • 詳解定時(shí)任務(wù)框架Quartz的使用

    詳解定時(shí)任務(wù)框架Quartz的使用

    Quartz是OpenSymphony開源組織在Job?scheduling領(lǐng)域又一個(gè)開源項(xiàng)目,完全由Java開發(fā),可以用來執(zhí)行定時(shí)任務(wù),本文就來帶大家聊聊它的具體使用
    2023-02-02
  • Java老矣 尚能飯否?

    Java老矣 尚能飯否?

    Java老矣,尚能飯否?各類編程語言橫空出世,紛戰(zhàn)不休,然而 TIOBE 的語言排行榜上,Java 卻露出了明顯的頹勢(shì)。這個(gè)老牌的語言,未來會(huì)是怎樣?
    2017-06-06
  • 解決IDEA中Maven項(xiàng)目中JSTL標(biāo)簽無效問題

    解決IDEA中Maven項(xiàng)目中JSTL標(biāo)簽無效問題

    這篇文章主要介紹了關(guān)于IDEA中Maven項(xiàng)目中JSTL標(biāo)簽無效問題的解決方法,需要的朋友可以參考下
    2018-09-09

最新評(píng)論