前言
各位讀者好, 我是小陳, 這是我的個(gè)人主頁(yè), 希望我的專欄能夠幫助到你:
?? JavaSE基礎(chǔ): 基礎(chǔ)語法, 類和對(duì)象, 封裝繼承多態(tài), 接口, 綜合小練習(xí)圖書管理系統(tǒng)等
?? Java數(shù)據(jù)結(jié)構(gòu): 順序表, 鏈表, 堆, 二叉樹, 二叉搜索樹, 哈希表等
?? JavaEE初階: 多線程, 網(wǎng)絡(luò)編程, TCP/IP協(xié)議, HTTP協(xié)議, Tomcat, Servlet, Linux, JVM等(正在持續(xù)更新)
提示:是正在努力進(jìn)步的小菜鳥一只,如有大佬發(fā)現(xiàn)文章欠佳之處歡迎批評(píng)指點(diǎn)~ 廢話不多說,直接上干貨!
一、配置文件的作用
項(xiàng)目中很多重要的數(shù)據(jù)都是在配置文件中配置的, 比如:
- 數(shù)據(jù)庫(kù)的連接信息
- 項(xiàng)目的啟動(dòng)端口
- 第三方系統(tǒng)的調(diào)用秘鑰等信息
- 設(shè)置日志打印級(jí)別, 設(shè)置保存日志的路徑, 發(fā)現(xiàn)和定位問題的普通日志和異常日志
- …
就拿第一條來說, 如果你的項(xiàng)目中沒有配置文件, 那你怎么連接到你要使用的數(shù)據(jù)庫(kù)呢?
二、兩種配置文件格式
SpringBoot 中主要有兩種配置文件格式 : properties 和 yml(YAML)
- properties 是默認(rèn)的配置文件格式, 項(xiàng)目創(chuàng)建好之后就存在
- 要想使用 yml 格式, 可以在 resource 目錄下手動(dòng)創(chuàng)建, 命名為xxx.yml
理論上講 properties 可以和 yml ?起存在于?個(gè)項(xiàng)目當(dāng)中, 但是當(dāng) properties 和 yml ?起存在?個(gè)項(xiàng)目中時(shí), 如果配置文件中出現(xiàn)了同樣的配置, 比如 properties 和 yml 中都配置了 “server.port(端口號(hào))”, 那么會(huì)以 properties 中的配置為主, 但加載
完 properties 文件之后, 也會(huì)加載 yml 文件的配置信息
雖然理論上來講 properties 可以和 yml 共存, 但實(shí)際的業(yè)務(wù)當(dāng)中, 通常會(huì)采取其中?種統(tǒng)?的配置文件格式, 這樣可以更好的維護(hù)(降低故障率)
1, properties 格式語法
properties 是以鍵值的形式配置的,key 和 value 之間是以 “=” 連接的
使用 # 添加注釋
# 配置項(xiàng)目啟動(dòng)端口號(hào), (默認(rèn)就是8080, 因?yàn)?span id="n5n3t3z" class="token class-name">SpringBoot內(nèi)嵌了tomcat, 但你可以修改成任其他端口號(hào))
server.port=8080
# 配置日志的級(jí)別
logging.level.root=info
# 配置日志的保存路徑和名稱
logging.file.path=D:/log_path
logging.file.name=D:/log_path/springboot1.log
# 設(shè)置MySQL的鏈接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/要使用的數(shù)據(jù)庫(kù)的庫(kù)名?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=連接的數(shù)據(jù)庫(kù)的密碼
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 設(shè)置MyBatis的XML保存路徑和命名
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
這些配置項(xiàng)都是系統(tǒng)配置項(xiàng), 看不懂沒關(guān)系, 后續(xù)文章會(huì)在使用這些配置項(xiàng)時(shí)再說明
更多系統(tǒng)配置項(xiàng)可點(diǎn)擊查看官方文檔
以上都是常用的系統(tǒng)配置項(xiàng), 但程序員甚至可以自己自定義配置項(xiàng), 下面會(huì)介紹系統(tǒng)配置項(xiàng)和自定義配置項(xiàng)的讀取方式
# 自定義配置
name=張三
age=20
imagepath=D:\\image\\
2, properties 格式缺點(diǎn)
上述配置項(xiàng)中有這么一段 :
# 設(shè)置MySQL的鏈接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/要使用的數(shù)據(jù)庫(kù)的庫(kù)名?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=連接的數(shù)據(jù)庫(kù)的密碼
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
你會(huì)發(fā)現(xiàn), 這幾行都是 spring.datasource 開頭的, 這就造成一定程度的代碼冗余, 寫起來比較麻煩, yml 就解決了這一缺點(diǎn)
3, yml 格式語法
yml 是 YAML 是縮寫, 它的全稱 Yet Another Markup Language 翻譯成中文是“另?種標(biāo)記語言”
yml 格式的優(yōu)點(diǎn) :
- yml 是?個(gè)可讀性高, 寫法簡(jiǎn)單、易于理解(我不這么認(rèn)為hhh), 它的語法和 JSON 語?類似
- yml ?持更多的數(shù)據(jù)類型, 它可以簡(jiǎn)單表達(dá)清單(數(shù)組)、散列表,標(biāo)量等數(shù)據(jù)形態(tài). 它使用空白符號(hào)縮進(jìn)和大量依賴外觀的特色,特別適合用來表達(dá)或編輯數(shù)據(jù)結(jié)構(gòu)、各種配置文件等
- yml 支持更多的編程語言,它不止是 Java 中可以使用, 在 Golang、PHP、Python、Ruby、JavaScript、Perl 中也適用
yml 是樹形結(jié)構(gòu)的配置文件, 它的基礎(chǔ)語法是“key: value”, 注意 key 和 value 之間使用英文冒號(hào)加空格的方式組成的, 其中的空格不可省略
使用 yml 配置數(shù)據(jù)庫(kù)連接信息 :
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/要使用的數(shù)據(jù)庫(kù)的庫(kù)名?characterEncoding=utf8
username: root
password: 數(shù)據(jù)庫(kù)的密碼
在 java 代碼中一個(gè) Tab 鍵是 4 個(gè)格符, 但在這個(gè) yml 文件中一個(gè) Tab 鍵是 2 個(gè)空格符
4, yml 格式缺點(diǎn)
如果配置項(xiàng)信息比較多, 我認(rèn)為反而不易于讀寫(寫法不如 properties 那么簡(jiǎn)單)
一旦 key 和 value 忘記了加空格, 或者帶有層級(jí)的配置項(xiàng)忘記了換行, 換行的位置不對(duì), 就會(huì)導(dǎo)致配置失敗, 因此不適合新手使用
5, yml 支持更多類型
# 字符串
str1: 你好 \n 你好
str2: '你好 \n 你好'
str3: "你好 \n 你好"
# 布爾值
flag1: true
flag2: false
# 整數(shù)
num: 10
# 浮點(diǎn)數(shù)
f: 6.666
# null ~代表null
Node: ~
字符串默認(rèn)不需要加上單引號(hào)或者雙引號(hào)
單引號(hào)時(shí), 轉(zhuǎn)義字符無效, /n 就當(dāng)作字符串 “/n”, 雙引號(hào)時(shí), 轉(zhuǎn)義字符會(huì)生效, /n 就仍然表示換行
yml 還可以配置一個(gè)對(duì)象 :
# 對(duì)象
person:
name: 張三
age: 18
# 或者使用行內(nèi)寫法表示
student2: {id: 2,name: 李四, age: 15}
yml 還可以配置一個(gè) list 集合
# list集合
colortypes:
color:
- 紅色
- 黃色
- 藍(lán)色
# 或者使用行內(nèi)寫法 colortypes: {color:[紅色,黃色,藍(lán)色]}
三、配置文件的讀取
properties 和 yml 都使用 @Value(“${ key 值}”) 的方式可讀取對(duì)應(yīng)的 value 值
@RestController
public class TestController {
@Value("${name}") // 讀取用戶自定義的配置
private String name;
@Value("${server.port}") //讀取系統(tǒng)配置項(xiàng)
private int port;
}
yml 中如果自定義了類的配置信息, 不能使用 @Value , 而是使用 @ConfigurationProperties(“自定義的類名”), 讀取方式如下 :
@RestController
@ConfigurationProperties("person")//這里不需要使用$, 里面的值說yml里定義的類名
public class Person{
//字段與yml里的名稱相同
private String name;
private int age;
// 下面一定要寫 getter() 和 setter() ! ! ! 這里省略了
}
yml 中如果自定義了 list 集合的配置信息, 也使用 @ConfigurationProperties(“自定義的集合名稱”) , 讀取方式如下 :
@Component
@ConfigurationProperties("colortypes") // 引號(hào)里面的值是 yml 里自定義的集合名稱
public class TestList {
private List<String> color;
// 下面一定要寫 getter() 和 setter() ! ! ! 這里省略了
}
三、不同環(huán)境下的配置文件
企業(yè)里面的項(xiàng)目, 一般都有三個(gè)環(huán)境 : 開發(fā)環(huán)境, 測(cè)試環(huán)境, (發(fā)布之后)上線運(yùn)行環(huán)境, 不同環(huán)境下的配置信息可能不同, 為了避免每次更換環(huán)境都需要重新修改配置文件的代碼, SpringBoot 支持配置不同環(huán)境下的配置文件
因?yàn)橛锌赡茉谡缴暇€之前, 在開發(fā)環(huán)境和測(cè)試環(huán)境反復(fù)橫跳, 如果上線之后有嚴(yán)重 bug , 一般也得再走一遍流程才能再次發(fā)布上線
一般會(huì)再創(chuàng)建三個(gè)配置文件, 命名為 : application-xxx
.properties(或.yml), 加上后綴 -xxx
表示不同環(huán)境下的命名區(qū)分, 一般使用 dev
表示生產(chǎn)環(huán)境, test
表示測(cè)試環(huán)境, pro
表示上線運(yùn)行環(huán)境
然后在一個(gè)公共的配置文件中標(biāo)識(shí)清楚當(dāng)前項(xiàng)目使用的是哪個(gè)配置文件(運(yùn)行在哪個(gè)環(huán)境下)
總結(jié)
SpringBoot 提供了 properties 和 yml 這兩種配置文件格式, 前者語法格式為 key=value , 后者語法格式為 key冒號(hào)空格value, 這兩種格式都支持自定義配置項(xiàng)
properties 和 yml 的一般配置項(xiàng)使用 @Value(${key值}) 的方式讀取對(duì)應(yīng)的 value, yml 中的類或者集合配置項(xiàng), 使用 @ConfigurationProperties(“類或集合的名稱”)
以上就是本篇的所有內(nèi)容了, 如果本篇對(duì)你有幫助,請(qǐng)點(diǎn)贊收藏支持一下,小手一抖就是對(duì)作者莫大的鼓勵(lì)啦??????~文章來源:http://www.zghlxwxcb.cn/news/detail-686250.html
上山總比下山辛苦
下篇文章見文章來源地址http://www.zghlxwxcb.cn/news/detail-686250.html
到了這里,關(guān)于【SpringBoot】?jī)煞N配置文件, 詳解 properties 和 yml 的語法格式, 使用方式, 讀取配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!