java架構基礎:Spring Cloud YAML 、Properties配置詳解

來源:互聯網
上載者:User
目錄

Spring Cloud YAML 配置詳解1

Properties詳解2

自訂參數2

參數引用3

隨機數4

外部參入4

多環境配置5

YAML6

YAML有以下基本規則:6

使用YAML完成多環境配置7

在之前的執行個體中,我們使用了src/main/resources/application.properties對我們的項目做了個人化的配置,這種配置方式簡單明了,也是我們經常使用的

但是應對複雜的商業需求下,多環境和編程化的配置無法得以滿足

為此Spring Cloud為我們提供了YAML的配置方式豐富我們的功能和簡化我們的開發同時也能簡單明了的分辨配置內容。

Properties詳解

自訂參數

自訂參數可以讓我們在設定檔中定義一些參數以供在程式中使用

在這裡我們使用Spring註解的方式實現這個功能

首先建立一個實體類

@Component

public class Dalao {

@Value("${dalao.name}")

private String name;

@Value("${dalao.yanzhi}")

private String yanzhi;

…..getter setter省略

@Component 註解:

把普通pojo執行個體化到spring容器中,相當於設定檔中的<bean id="" class=""/>

修改application.propertie增加以下配置參數

dalao.name=mashibing

dalao.yanzhi=100

使用自訂參數

Spring 管理對象

讓Spring 注入對象,這裡需要注意的是如果自己new的對象是沒有被Spring容器管理的,所以不會自動注入屬性值給我們

@Autowired

private Dalao dalao;

測試列印

System.out.println(ToStringBuilder.reflectionToString(dalao));

System.out.println(ToStringBuilder.reflectionToString(new Dalao()));

ToStringBuilder

這裡用到了ToStringBuilder完成對象轉字串,要使用這個對象的話需要引入Spring的工具包commons-lang3

Pom

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>3.7</version>

</dependency>

參數引用

在application.propertie中的各個參數值是可以相互引用的

我們修改一下之前的配置

dalao.name=mashibing

dalao.yanzhi=100

dalao.desc=${dalao.name}is a good teacher,bing bu shi yin wei ${dalao.name} de yan zhi = ${dalao.yanzhi}

實體中添加

@Value("${dalao.desc}")

private String desc;

輸出結果

隨機數

有些特殊需求,我們不希望設定的屬性值是一個固定值,比如伺服器隨機連接埠號碼,某些編號等,我們可以使用${radom}在配置中產生隨機int,long或是string

${random.int()} = 隨機int

${random.long} = 隨機long

${random.int(50)} = 50以內的隨機數

${random.int(50,100)} = 50~100之間的int隨機數

${random.value}= 隨機字串

設定檔中使用

dalao.xiaodi.zhangyang.yanzhi=${random.int(50,100)}

dalao.xiaodi.zhangyang.xinqing=${random.value}

外部參入

在微服務架構中經常會使用自動營運部署工具,使用這些工具來啟動我們的服務

我們的Spring boot程式通常是使用java –jar的方式來啟動啟動並執行

對於服務連接埠號碼或是一些其他需要在啟動服務的時候才能決定的值,如果在配置中寫死或是用隨機明顯是滿足不了需求的

我們可以使用外部參數替換自訂的參數

比如臨時決定服務連接埠:

java -jar demo-0.0.1-SNAPSHOT.jar --server.port=60

顏值同時發生變化:

java -jar demo-0.0.1-SNAPSHOT.jar --server.port=60 --dalao.xiaodi.zhangyang.yanzhi

使用外部配置方式可以讓我們在服務啟動時改變像服務連接埠,資料庫連接密碼,自訂屬性值等等

多環境配置

在實際開發中,我們的一套代碼可能會被同時部署到開發、測試、生產等多個伺服器中,每個環境中諸如資料庫密碼等這些個人化配置是避免不了的,雖然我們可以通過自動化營運部署的方式使用外部參數在服務啟動時臨時替換屬性值,但這也意味著營運成本增高。

我們可以通過多套配置來避免對於不同環境修改不同的配置屬性

使用方式:

首先建立多套設定檔

命名規則為:

Application-*,properties

Application-dev,properties = 開發環境

Application-test,properties= 測試環境

Application-prod,properties=產生環境

接下來我們在 application.properties中設定哪套配置生效的開關

使用 spring.profiles.active=dev

在使用java –jar的方式啟動服務的時候我們就可以通過外部參數改變整套配置了

java -jar demo-0.0.1-SNAPSHOT.jar -- spring.profiles.active=test

YAML

YAML是“YAML Ain't Markup Language YAML不是一種標記語言”的外語縮寫

但為了強調這種語言以資料做為中心,而不是以置標語言為重點,而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的資料序列化格式,是一個可讀性高並且容易被人類閱讀,容易和指令碼語言互動,用來表達資料序列的程式設計語言。

它是類似於標準通用標記語言 (SGML)的子集XML的資料描述語言 (Data Description Language),文法比XML簡單很多。

YAML有以下基本規則:

1、大小寫敏感

2、使用縮排展示層級關係

3、禁止使用tab縮排,只能使用空格鍵

4、縮排長度沒有限制,只要元素對齊就表示這些元素屬於一個層級。

5、使用#表示注釋

6、字串可以不用引號標註

使用YAML完成多環境配置

方式一:

單一yml檔案 配合多propertys檔案

方式二:

單一yml檔案內配置所有變數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.