springboot 讀取 yml 配置的幾種方式

2021-03-02 java1234

點擊上方藍色字體,選擇「標星公眾號」

優質文章,第一時間送達

  作者 |  西紅柿雞蛋面~

來源 |  urlify.cn/qe6RZz

76套java從入門到精通實戰課程分享

前言: 在 springboot 項目中一般默認的配置文件是 application.properties, 但是實際項目中我們一般會使用 application.yml 文件, 下面就介紹一下在 springboot 中讀取 yml 配置的幾種方式.

yml 文件規則

yml 文件的好處,天然的樹狀結構,一目了然,實質上跟 properties 是差不多的。

不支持 tab 縮進

可以使用 "- 小寫字母" 或 "_小寫字母" 來 代替 "大寫字母", 如 userName 與 user-name ,user_name 含義是一樣的
key: value 格式書寫
key 後面跟著冒號, 再後面跟著一個空格, 然後是值

幾種數據格式的表示方式

普通的值(數字,字符串,布爾)

對象、Map (屬性和值) (鍵值對)

數組 (List、Set)

普通的值(數字,字符串,布爾)

直接就是 key: value , 如:

config set maxmemory-policy allkeys-lru
age: 18
name: mysgk

注:

字符串默認不用加上單引號或者雙引號;
"":雙引號;不會轉義字符串裡面的特殊字符;特殊字符會作為本身想表示的意思
name: "zhangsan \n lisi":輸出;zhangsan 換行 lisi
'':單引號;會轉義特殊字符,特殊字符最終只是一個普通的字符串數據
name: 『zhangsan \n lisi』:輸出;zhangsan \n lisi


對象、Map(屬性和值)(鍵值對)

對象還是 k: v 的方式
k: v:在下一行來寫對象的屬性和值的關係;注意縮進 (不支持 tab, 使用空格), 如:

config set maxmemory-policy allkeys-lru
person:
    age: 18
    name: mysgk

數組(List、Set)

用 - 值表示數組中的一個元素, 如:

config set maxmemory-policy allkeys-lru
hands:
    - left
    - right

第一種讀取方式 @value

如果我們只需要配置文件中的一兩個值,@Value 是最簡單方便的方式.

config set maxmemory-policy allkeys-lru
server:
  port: 8081

我們在代碼中可以這樣取值

config set maxmemory-policy allkeys-lru
@Value("${server.port}")
public String port; 

注: 此處的 prot 所在的類需要是一個組件, 如果是實體類需要加上 @Component

第二種讀取方式 @ConfigurationProperties

如果需要一個 JavaBean 來專門映射配置的話, 我們一般會使用 @ConfigurationProperties 來讀取.

config set maxmemory-policy allkeys-lru
student:
    age: 18
    name: mysgk

javabean:

config set maxmemory-policy allkeys-lru
@Component
@ConfigurationProperties(prefix = "student")
public class Student {

    private String name;

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

    @Override
    public String toString() {
        return "Student{" +
                " + name + '\'' +
                ", age=" + age +
                '}';
    }
}

使用 @ConfigurationProperties, 需要配置一個 prefix (前綴) 參數, 即寫上 key 就可以了.

第三種讀取方式 @Environment

這種方法好像用的比較少, 基本沒用過...

config set maxmemory-policy allkeys-lru
test:
    msg: aaa


代碼:

config set maxmemory-policy allkeys-lru
    @Autowired
    private Environment env

    @RequestMapping(value = "index2", method = RequestMethod.GET)
    public String index2() {
        System.out.println(env.getProperty("test.msg"));
        return "The Way 2 : "+ env.getProperty("test.msg");
    }
}     

鋒哥最新SpringCloud分布式電商秒殺課程發布

👇👇👇

感謝點讚支持下哈 

相關焦點

  • 記mybatis應用在springboot中的一次踩坑記錄
    有次從網上找了個springboot+mybatis+redis的web應用框架。簡單了解了下項目架構,就匆匆上手,照葫蘆畫瓢的做了個簡單的CRUD。看到項目中源作者在UserMapper.xml文件中,沒有定義user類型直接可以在resultType和parameterType中只用。
  • 「SpringSecurity-1」Springboot+Security+Oauth2授權碼模式
    話不多說開始搞……項目搭建項目中使用到的相關框架的版本號:springboot版本:2.3.0.RELEASEspring-security-oauth2版本:2.3.3.RELEASE創建認證伺服器添加依賴pom.xml中添加依賴,特別說明這是一個父子項目,父pom中添加了spring-boot-dependencies
  • 全網最細緻的SpringBoot實戰教程,超適合新手小白入坑學習
    配置文件選擇)1.多Profile文件我們在主配置文件編寫的時候,文件名可以是 application-{profile}.properties/yml從而實現動態切換。默認是使用:application.properties2.yml支持多文檔塊方式server: port: 8081spring: profiles: active: dev---server: port: 8083spring: profiles: dev---server
  • SpringBoot常見面試題
    SpringMVC是一個實現了MVC設計模式的框架,使用分離的方式開發Web應用。簡化了Web應用程式的開發。Spring和SpringMVC都需要大量的配置,Spring Boot 是 Spring 開源組織下的子項目,是 Spring 組件一站式解決方案,主要是簡化了使用 Spring 的難度,刪去了繁重的配置,提供了各種啟動器,使開發者能快速上手,搭建企業級應用。
  • SpringBoot配置文件的加載優先級順序
    01application.properties加載Spring Boot啟動會掃描以下位置的application.properties或者application.yml文件作為Spring Boot的默認配置文件file:/config/file:/classpath:/config/classpath:/以上順序按照優先級從高到低的順序,所有位置的文件都會被加載,高優先級的配置內容會覆蓋低優先級配置的內容,其中配置文件中的內容是互補配置,即存在相同的配置內容,高優先級的內容會覆蓋低優先級的內容存在不同的內容的時候,高優先級和低優先級的配置內容取併集我們也可以通過
  • springboot+springsecurity實現前後端分離簡單實現!
    通過各種方式學習springsecurity,在B站、騰訊課堂、網易課堂、慕課網沒有springsecurity的前後端分離的教學視頻,那我就去csdn去尋找springsecurity博客,發現幾個問題:要麼就是前後端不分離,要麼就是通過內存方式讀取數據,而不是通過資料庫的方式讀取數據,要麼就是大佬們給的代碼不全、把代碼講的太繞,關鍵部分沒有注釋
  • 雲計算核心技術Docker教程:Docker Compose yml常用配置指令簡介
    通過 Compose,您可以使用 YML 文件來配置應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 文件配置中創建並啟動所有服務。YAML 的語法和其他高級語言類似,並且可以簡單表達清單、散列表,標量等數據形態。它使用空白符號縮進和大量依賴外觀的特色,特別適合用來表達或編輯數據結構、各種配置文件、傾印調試內容、文件大綱。
  • SpringBoot 的多數據源配置
    既然有多個數據源,因為資料庫用戶名密碼可能不相同,所以是需要配置多個數據源信息的,直接在 properties/yml 中配置即可。創建 BookMapper.xml 和 UserMapper.xml 放到配置文件配置的路徑 mapper 目錄下。創建 UserMapper 和 BookMapper 接口操作類放在不同的目錄。這裡注意 Mapper 接口要按數據源分開放在不同的目錄中。後續好使用不同的數據源配置掃描不同的目錄,這樣就可以實現不同的 Mapper 使用不同的數據源配置。
  • Springboot+MybatisPlus高效實現增刪改查
    本文分為以下幾個部分講解:引入Mybatis-Plus依賴代碼生成器配置Mybatis-PlusCURD示例條件構造分頁擴展功能一、引入Mybatis-Plus依賴本文示例使用maven作為依賴管理,在pom.xml文件引入springboot和Mybatis-plus
  • 用SpringBoot搭建SSM項目環境,真簡便
    一、yml配置文件配置文件除了可以使用properties類型,還可以使用後綴名為:.yml或者.yaml的類型,比如說:application.yml文件。注意:如果兩種配置文件都有,會將配置信息合併,如果有重複屬性,以properties為準。
  • Docker容器的三種創建運行方式,一個比一個好用
    現在的項目部署運維中,使用Docker容器越來越多,Docker給我們提供創建容器的方式也有好幾種,主要是docker run命令、Dockerfile文件、docker-compose三種方式,一個比一個方便。我們來看下有幾種方式的具體用法吧。
  • SpringBoot整合EasyPoi實現Excel的導入和導出(帶圖片)
    點擊上方藍色字體,選擇「標星公眾號」優質文章,第一時間送達66套java從入門到精通實戰課程分享前言實際工作中可能會用到Excel的導入和導出功能,Java操作Excel的方式有很多種<groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-freemarker</artifactId>        </dependency>application.yml
  • springboot整合mybatis實現配置多數據源
    前言:實際開發中,隨著業務的擴張,使用單一的資料庫顯然有點臃腫,不便管理,經常會實現將不同的業務模塊的數據表結構放在各自的資料庫中,下邊簡單實現sprongboot實現多數據源的配置。一 項目結構:二 涉及到的資料庫:三 springboot中的application.properties文件:本次demo簡單配置下兩個數據源為例。
  • 「SpringSecurity-3」Springboot+Security + Oauth2授權碼模式
    上一篇我們實現了授權碼的整個流程,並且添加了資源伺服器,通過獲取到的token去訪問資源伺服器提供的REST接口,現在對第一篇中提到的幾個小任務進行調研修改下。(4)獲取授權碼的用戶登錄頁面是否可以定製,如何操作?授權登錄頁面自定義實現授權登陸頁修改第一步修改security配置文件。
  • Springboot @EnableWebMvc 註解
    }並且如果容器中存在  WebMvcConfigurationSupport 這個類,那麼 springboot 對於 springmvc 的自動配置將會失效可以看到這個類中都是一些空方法,只是保留了最基本的 MVC 的功能,並不具備其它的擴展功能如下:springboot 對於 mvc 模塊的配置就在 WebMvcAutoConfiguration
  • SpringBoot開發常用的註解及作用
    隨著網際網路的快速發展,不斷的湧出新的技術,springboot是什麼呢?springboot它是spring開源組織下的子項目,主要是用來簡化spring的難度以及不足,節省程式設計師的繁重的配置,為程式設計師開發過程中各種啟動器。
  • Python讀取ini配置文件
    ,下面來看一下如何讀取信息。讀取配置使用python自帶模塊configparser來實現;1、引入類庫,如下:import configparse2、5、讀取配置(python3.*版本必須加encoding編碼)con.read(config_path, encoding='utf-8')注意:如果ini文件裡面寫的是數字,讀出來默認是字符串使用配置配置讀取後是一個對象格式,我們如何來使用呢
  • Springboot整合easyExcel導入導出Excel
    來源 |  urlify.cn/BFnIrq背景:最近公司有個需求要求可以導入、導出excel,因此在此記錄學習一下如何使用Springboot整合easyExcel;需求:資料庫中有張user表,有個業務要求可以導入、導出「用戶名單.xls」表一、準備:創建項目:關於springboot