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

Spring?Boot讀取配置文件內(nèi)容的3種方式(@Value、Environment和@ConfigurationProperties)

 更新時(shí)間:2023年01月04日 15:33:13   作者:心態(tài)還需努力呀  
工作中經(jīng)常會(huì)有一些參數(shù)需要配置,同時(shí)在代碼里面需要用到,所有就需要配置類讀取,然后在使用的時(shí)候注入該類進(jìn)行獲取相關(guān)參數(shù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot讀取配置文件內(nèi)容的3種方式,需要的朋友可以參考下

前言

Spring Boot中在yaml中編寫(xiě)的自定義變量、數(shù)組、對(duì)象等,在代碼中讀取該yaml配置文件中內(nèi)容的三種方式。實(shí)現(xiàn)在代碼中運(yùn)用配置文件(yaml)中自定義的值。yaml的基本語(yǔ)法格式我不知道該怎么總結(jié),很簡(jiǎn)單,學(xué)完我的唯一感受就是記得冒號(hào)后面加空格、加空格、加空格。。。所以這里直接將讀取配置文件內(nèi)容的三種方式。不清楚yaml語(yǔ)法格式的可以先去了解一下。

在開(kāi)始獲取前,首先在resources下配置aplication.yaml文件,在yaml文件內(nèi)編寫(xiě)自定義的變量、數(shù)組、對(duì)象。已用來(lái)展示獲取的內(nèi)容值。代碼如下:

name: 心態(tài)還需努力呀
 
#對(duì)象
person:
  name: lisi
  age: 20
 
#數(shù)組
address:
  - shanghai
  - beijing

一、@Value

在Controller類下給屬性分別以@Value注解的方式分別賦值,@Value里的${yaml變量名}。

獲取對(duì)象就對(duì)象.變量名。

獲取數(shù)組就是使用索引的方式數(shù)組[0],在這里表示數(shù)組中的第一個(gè)值(上海)。

具體代碼如下:

package com.imust.controller;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class HelloController {
    @Value("${name}")
    private String name;
//    獲取對(duì)象
    @Value("${person.name}")
    private String person_name;
 
    @Value("${person.age}")
    private int person_age;
 
//    獲取數(shù)組
    @Value("${address[0]}")
    private String address1;
 
    @Value("${address[1]}")
    private String address2;
 
    @RequestMapping("/hello")
    public String hello(){
        System.out.println(name);
        System.out.println(person_name);
        System.out.println(person_age);
        System.out.println(address1);
        System.out.println(address2);
        System.out.println("========================");
        return "Hello,Spring Boot!";
    }
}

 運(yùn)行http://localhost:8080/hello??刂婆_(tái)打印效果圖如下:

二、Environment

2.1 注入對(duì)象

注入對(duì)象需要用到Autowired注解

@Autowired
    private Environment env;

2.2 調(diào)用獲取屬性的方法

方法內(nèi)傳入?yún)?shù)與上面@Value里的參數(shù)一樣,都是與yaml文件配置里面自定義的一致。

System.out.println(env.getProperty("name"));
System.out.println(env.getProperty("person.name"));
System.out.println(env.getProperty("person.age"));
System.out.println(env.getProperty("address[0]"));

運(yùn)行后http://localhost:8080/hello??刂婆_(tái)打印效果圖如下:

2.3 上述兩種方法對(duì)比

首先第一種@Value方法便于理解,用起來(lái)也很簡(jiǎn)單,就是屬性多了后會(huì)出現(xiàn)大量的@Value給屬性賦值,代碼不夠精簡(jiǎn)。

第二種就解決了這一麻煩,只需要注入Environment對(duì)象后,直接使用getProperty方法里寫(xiě)入要讀入的值的key就可獲取到。代碼會(huì)很精簡(jiǎn)。

三、@ConfigurationProperties

3.1 創(chuàng)建一個(gè)實(shí)體類

這里以獲取配置文件中的person對(duì)象值為例。所以名字叫Person。在上方添加@ConfigurationProperties注解。

代碼如下:

package com.imust.pojo;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
@Component
@ConfigurationProperties
public class Person {
    private String name;
    private int age;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

3.2 解決警告問(wèn)題

當(dāng)加上@ConfigurationProperties注解后會(huì)出現(xiàn)下圖所示的內(nèi)容: 

點(diǎn)擊上圖箭頭所指的地方,進(jìn)入網(wǎng)頁(yè)后將依賴賦值放到自己的pom.xml文件的放依賴的地方。

導(dǎo)入依賴下載完成后上述的警告就會(huì)消失。

3.3 修改@ConfigurationProperties

因?yàn)槲覀冇?個(gè)name的值,如果不加參數(shù)獲取默認(rèn)是取高層級(jí)下的值,age就不會(huì)被取出來(lái)。

所以我們要加上perfix=“person”,用來(lái)指定該類下的屬性是指的person對(duì)象下的值。

@ConfigurationProperties(prefix = "person")

3.4 編寫(xiě)測(cè)試代碼

在Controller注入Person

@Autowired
    private Person person;

打印person查看效果 

System.out.println(person.toString());

查看控制臺(tái)輸出的結(jié)果,可看到讀取配置文件內(nèi)容成功。

總結(jié)

讀取配置文件的內(nèi)容的三種方法就已經(jīng)演示完成,在大多數(shù)屬性少的情況下還是用@Value的方法最為簡(jiǎn)便。精簡(jiǎn)的話還是第二種注入對(duì)象的方式使代碼看起來(lái)更加美觀。理解起來(lái)不太容易。第三種是在特殊的情況下比較常用的讀取配置文件的內(nèi)容可以封裝為對(duì)象。第一種是必須會(huì)的,二三種可以簡(jiǎn)單理解,用到時(shí)可以參考資料也會(huì)很快的想起來(lái)并且快速的運(yùn)用。

到此這篇關(guān)于Spring Boot讀取配置文件內(nèi)容的3種方式的文章就介紹到這了,更多相關(guān)Spring Boot讀取配置文件內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis的insert語(yǔ)句插入數(shù)據(jù)時(shí)的返回值的實(shí)現(xiàn)

    mybatis的insert語(yǔ)句插入數(shù)據(jù)時(shí)的返回值的實(shí)現(xiàn)

    這篇文章主要介紹了mybatis的insert語(yǔ)句插入數(shù)據(jù)時(shí)的返回值的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Nacos服務(wù)發(fā)現(xiàn)并發(fā)啟動(dòng)scheduleUpdate定時(shí)任務(wù)的流程分析

    Nacos服務(wù)發(fā)現(xiàn)并發(fā)啟動(dòng)scheduleUpdate定時(shí)任務(wù)的流程分析

    這篇文章主要介紹了Nacos服務(wù)發(fā)現(xiàn)并發(fā)啟動(dòng)scheduleUpdate定時(shí)任務(wù),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • java判斷各類型字符個(gè)數(shù)實(shí)例代碼

    java判斷各類型字符個(gè)數(shù)實(shí)例代碼

    大家好,本篇文章主要講的是java判斷各類型字符個(gè)數(shù)實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • jdk自帶線程池實(shí)例詳解

    jdk自帶線程池實(shí)例詳解

    在最近做的一個(gè)項(xiàng)目中,需要大量的使用到多線程和線程池,下面就java自帶的線程池和大家一起分享
    2018-02-02
  • Java方法重載和方法重寫(xiě)的區(qū)別到底在哪?

    Java方法重載和方法重寫(xiě)的區(qū)別到底在哪?

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java方法重載和方法重寫(xiě)的區(qū)別到底在哪展開(kāi),文中有非常詳細(xì)的解釋,需要的朋友可以參考下
    2021-06-06
  • Java多線程繼承Thread類詳解

    Java多線程繼承Thread類詳解

    Java多線程的兩種實(shí)現(xiàn)方式:繼承Thread類 & 實(shí)現(xiàn)Runable接口,今天我們來(lái)學(xué)習(xí)下繼承Thread類,希望大家能夠喜歡
    2016-06-06
  • Java中的SimpleDateFormat使用詳解

    Java中的SimpleDateFormat使用詳解

    SimpleDateFormat 是一個(gè)以國(guó)別敏感的方式格式化和分析數(shù)據(jù)的具體類。這篇文章主要介紹了Java中的SimpleDateFormat使用詳解,需要的朋友可以參考下
    2017-03-03
  • Java開(kāi)發(fā)環(huán)境配置JDK超詳細(xì)整理(適合新手入門(mén))

    Java開(kāi)發(fā)環(huán)境配置JDK超詳細(xì)整理(適合新手入門(mén))

    這篇文章主要給大家介紹了關(guān)于Java開(kāi)發(fā)環(huán)境配置JDK超詳細(xì)整理的相關(guān)資料,非常適合新手入門(mén),JDK是Java語(yǔ)言的軟件開(kāi)發(fā)工具包,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序,需要的朋友可以參考下
    2023-11-11
  • SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié)

    SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié)

    這篇文章主要介紹了SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java使用5個(gè)線程計(jì)算數(shù)組之和

    Java使用5個(gè)線程計(jì)算數(shù)組之和

    本文主要介紹了Java使用5個(gè)線程計(jì)算數(shù)組之和,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評(píng)論