《穿越SpringBoot 》 第三章-SpringBoot 配置詳解 | 第1節- SpringBoot Spring Boot 中yaml 配置檔案
Spring Boot 中yaml 配置檔案
前提:
藉助:IntelliJ IDEA
,Maven構建工具
,以及基於SpringBoot 2.3.4
。
官人如需使用 Maven 請閱讀教程:Maven 構建工具的下載與安裝
官人如需使用 IDEA 請閱讀教程:IntelliJ IDEA
更多幹貨:
請參考Java學習資料:https://www.CJNB
自行學習。
定義:
Yaml是什麼?
Yaml是JSON
的一個超集
,是一種方便的定義層次配置資料
的格式,結構層次上清晰明瞭,配置簡單易讀、易用。要想使用YAML
作為屬性配置檔案
,需要將SnakeYAML庫
新增到classpath下,Spring Boot對SnakeYAML庫也做了整合,例如使用spring-boot-starter-web
或spring-boot-starter都會自動新增SnakeYAML庫
到classpath下。
要求:
1.字尾名 .yml
.yaml
2.用縮排
來表示層級關係
:且縮排必須使用空格
,不能使用tab鍵。
3.他是區分大小寫
的。
下面將進行簡單的
application.yml配置檔案的屬性配置,睜大眼看清楚哦。
為了讓SpringBoot更好的生成資料,我們需要新增如下spring-boot-configuration-processor依賴,該依賴只會在編譯時呼叫,所以不用擔心會對生產造成影響
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
檔案application.yml的配置:
application.yml配置檔案中可以定義很多東西。
物件、map
寫法:key: value (注意:冒號後的空格不能省略)如下圖程式碼。
#介值對
com:
example:
boot:
map:
aaa: 123
bbb: 456
ccc: 789
#行內寫法
map: {aaa: 123,bbb: 456,ccc: 789}
陣列、集合
寫法:用 - 來定義元素
#方式一:
com:
example:
boot:
arr:
- 1
- 2
- 3
list:
- a
- b
- c
set:
- true
- false
#方式二:行內的寫法
arr: [1,2,3]
list: [a,b,c]
set: [true,false,true]
屬性名
當Java屬性名是駝峰形式,比如:lastName
com:
example:
boot:
# 關於屬性名有三種寫法
lastName: hello yml1
last-name: hello yml2
last_name: hello yam3
佔位符
${}
可以引用其他配置 ,不支援行內寫法
server:
port: 8080
com:
example:
boot:
arr:
- 1
- ${server.port}
- 3
字串
1.可以直接寫
2.可以用單引號括起來1,2的效果一樣,都是會把特殊字元當成普通的字串來看待,不會處理。
3用雙引號括起來:適用於裡面有特殊字元,比如 \n
com:
example:
boot:
# 關於屬性名有三種寫法
#1.
lastName: hello \n yml1
#2.
last-name: 'hello \n yml2'
#3.
last_name: "hello \n yam3"
profile的支援
單檔案多環境配置:
多環境配置:
在真實的應用中,常常會有多個環境(如:開發,測試,生產等),不同的環境資料庫連線都不一樣,這個時候就需要用到spring.profile.active
的強大功能了,它的格式為application-{profile}.properties,這裡的application為字首不能改,{profile}是我們自己定義的。
下圖為總application.yml檔案
如下圖建立application-dev.properties、application-prod.properties分配置檔案
外部配置的優先載入,優先順序更高如下圖對比可知:
內部application.yml檔案:
外部application.yml檔案 :
我們對已經開發完成的程式碼打包釋出,期間在測試環境測試通過了,那麼即可釋出上生產,這個時候是修改application.properties的配置是很不方便的。那麼需要我們建立如下的外部檔案 ,然後cmd命令執行即可。
配置檔案存放位置
編寫XxxProperties config配置物件類
演示:用自己的物件接收application.yml 配置檔案(即給物件注入值)這裡的物件是一個map
類裡定義了一個map、list、set、arr、模擬定義了lastName駝峰命名,利用lombok生成其get、set方法。
lombok用法:匯入lombok,參考文末pom依賴;使用@Data註解即可
package com.example.boot.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Data//利用 lombok外掛自動生成 get、set方法
@ConfigurationProperties(prefix ="com.example.boot")//prefix 指定一個字首
public class XxxProperties {
//用一個map來接收,必須要有getter setter方法。
private Map<String,Object> map;
private Integer [] arr;
private List<String> list;
private Set<Boolean> set;
private String lastName;
}
編寫BootApplication啟動類
package com.example.boot;
import com.example.boot.config.XxxProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import java.util.Arrays;
@EnableConfigurationProperties(XxxProperties.class )//將XxxProperties類 註冊進去 宣告為bean。
@SpringBootApplication
public class BootApplication implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(BootApplication.class, args);
}
//注入 XxxProperties類
@Autowired
private XxxProperties properties;
//1.實現 ApplicationRunner介面 生成 run方法進行測試。(在程式啟動後會回撥執行)
//2.在單元測試類中進行測試
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println(properties.getMap());
System.out.println(Arrays.asList(properties.getArr()));
System.out.println(properties.getList());
System.out.println(properties.getSet());
System.out.println(properties.getLastName());
}
}
擴充profile的支援
application.properties檔案的配置
1.配置profile
2.啟用profile
方法一:通過主配置檔案啟用,如下圖
方法二:右鍵進入edit configuration
其他場景:同時執行兩個環境
application.properties比application.yml優先順序高
測試:
1.在mawen環境下打包。
2.然後進入到專案目錄(即你的原始碼中target目錄),此處以我本地目錄為主:/Users/Documents/springboot-learning-experience/spring-boot-config
3.然後開啟 cmd 程式,輸入:java -jar spring-boot-config-0.0.1-SNAPSHOT.jar 回車即可
4.最後檢視控制檯輸出即可
pom.xml:依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>1010</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boot</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- configuration-processor -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
總結:
待完善…
本教程基於最新的spring-boot-starter-parent:2.3.4RELEASE
編寫,目前很多大佬都寫過關於SpringBoot的教程了,如有雷同,請多多包涵.
相關文章
- 【SpringBoot】YAML 配置檔案Spring BootYAML
- SpringBoot2配置檔案application.yamlSpring BootAPPYAML
- 【SpringBoot】配置檔案Spring Boot
- Springboot配置檔案Spring Boot
- SpringBoot(配置檔案)Spring Boot
- 轉載:SpringBoot非官方教程 | 第二篇:Spring Boot配置檔案詳解Spring Boot
- springboot專案中yaml檔案Spring BootYAML
- 3 springboot配置檔案Spring Boot
- SpringBoot-配置檔案Spring Boot
- SpringBoot第二篇:配置檔案詳解一Spring Boot
- springboot讀取自定義配置檔案節點Spring Boot
- springboot讀取配置檔案Spring Boot
- SpringBoot之logback配置檔案Spring Boot
- Springboot載入配置檔案Spring Boot
- springboot上傳檔案配置Spring Boot
- SpringBoot配置檔案及自動配置原理詳解,這應該是SpringBoot最大的優勢了吧Spring Boot
- SpringBoot專案配置檔案加密Spring Boot加密
- 修改SpringBoot的配置檔案application.yaml後啟動失敗Spring BootAPPYAML
- SpringBoot配置檔案佔位符Spring Boot
- [SpringBoot] 配置檔案 與常用方法Spring Boot
- SpringBoot專案中獲取配置檔案的配置資訊Spring Boot
- SpringBoot 如何解析配置檔案中的list?Spring Boot
- SpringBoot專案配置檔案中密碼的加密Spring Boot密碼加密
- SpringBoot基礎學習(二) SpringBoot全域性配置檔案及配置檔案屬性值注入Spring Boot
- springboot yml 配置檔案注入Map,ListSpring Boot
- [springboot]配置檔案載入順序Spring Boot
- SpringBoot讀取自定義配置檔案Spring Boot
- springboot如何使用自定義配置檔案Spring Boot
- SpringBoot專案配置檔案佔位符Spring Boot
- application.yml檔案配置springboot專案APPSpring Boot
- springboot 配置Spring Boot
- springboot配置Spring Boot
- Java SpringBoot 載入 yml 配置檔案中字典項JavaSpring Boot
- SpringBoot詳解(三)-Spring Boot的web開發Spring BootWeb
- SpringBoot系列之YAML配置用法學習筆記Spring BootYAML筆記
- SpringBoot是如何載入配置檔案的?Spring Boot
- SpringBoot 配置檔案給實體注入值Spring Boot
- SpringBoot配置檔案敏感資訊加密方案Spring Boot加密