【JavaEE】Spring Boot 開發(fā)要點(diǎn)總結(jié)(2)
【JavaEE】Spring Boot 開發(fā)要點(diǎn)總結(jié)(2)
所有重要和必要的數(shù)據(jù)都是在配置文件中配置的
- 簡潔明了,干凈利落,修改方便,相比于xml,更有代碼的感覺,功能用處也更多更被重視
例如:
- 數(shù)據(jù)庫的連接時(shí)的需要的信息配置(用戶名,url,密碼)
- 項(xiàng)目的啟動(dòng)端口是什么(server.port)
- 第三方系統(tǒng)的調(diào)用密鑰信息
- 用于發(fā)現(xiàn)和定位問題的普通日志和異常日志等~
沒有配置文件,就無法連接數(shù)據(jù)庫,甚至不能保存日志!
1. 配置文件的兩種格式
配置文件的類型有兩種:
.properties
-
.yml
-
.yaml
也一樣 - 這個(gè)yaml跟yml是一樣的,后面不做演示
-
兩種最主要的區(qū)別就是,格式不同,且對(duì)于重復(fù)的設(shè)置,properties的優(yōu)先級(jí)更高~
- propertise
- yml
結(jié)果:
雖然這兩種文件可以共存,但是在實(shí)際開發(fā)的時(shí)候,通常是統(tǒng)一一種配置文件的~
2. .properties 文件
.properties配置文件是最早期的格式,為項(xiàng)目的默認(rèn)配置文件
而這種寫法相對(duì)于比較正式,不易出錯(cuò),整齊全面,適合初學(xué)者
- 之后我們自己的項(xiàng)目,我們寫的就是這種 ~
2.1 基本語法
- .properties 配置文件是以鍵值對(duì)形式配置的: key=value
- .properties,一行一條語句
例如:
server.port=8080
spring.datasource.url=jdbc:mysql:127//127.0.0.1:3306/testdb?charsetEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
.
代表著層級(jí)關(guān)系,“的”:X.Y => X里面的Y,對(duì)象的用法去聯(lián)想也可以~
2.2 注釋
# 井號(hào)代表注釋~
重新啟動(dòng)后,(保存后顯示)就會(huì)發(fā)現(xiàn)注釋亂碼的問題~
- 這個(gè)時(shí)候就需要去設(shè)置,改動(dòng)編碼格式都為UTF-8
- 當(dāng)然,原本的亂碼還會(huì)保留,因?yàn)橐呀?jīng)不可逆了,亂了保存后誰都不認(rèn)識(shí)
2.3 配置項(xiàng)
配置文件的配置類型分兩種:
-
系統(tǒng)配置項(xiàng)
- 例如:server.port
-
用戶自定義配置項(xiàng)
- 想寫啥寫啥都o(jì)k,例如:mine.name=大帥哥
- 命名參考變量命名~
對(duì)于系統(tǒng)配置項(xiàng),就是給系統(tǒng)用的,系統(tǒng)在啟動(dòng)的時(shí)候會(huì)自動(dòng)獲取,然后設(shè)置到一些必要的地方,例如端口號(hào)…
而對(duì)于用戶自定義的配置項(xiàng),則是用戶保存的一些鍵值對(duì)罷了,系統(tǒng)不會(huì)用到,是用戶主動(dòng)去讀取的
- 當(dāng)然,系統(tǒng)配置項(xiàng),也可以被主動(dòng)讀到~
2.4 主動(dòng)讀取配置文件的鍵值
一樣的,在JavaEE進(jìn)階,遍地是注解,而這里,仍然有注解可以解決我們的問題~
- 來自【Spring框架】的@Value 注解
現(xiàn)在開始的注解,大部分都是“屬性注入”的思想,適當(dāng)聯(lián)系之前的DI~
- 對(duì)于Bean對(duì)象的具體應(yīng)用細(xì)節(jié),后續(xù)講解,這里并不是重點(diǎn)
- 猜測含義就是,將key為“mine.name”,注入到字符串name中
- 并在訪問sayHi方法時(shí)返回~
返回了key值~
- 這種寫法跟沒寫一樣~
正確的寫法應(yīng)該是:“${XXX.YYY}”
效果:
補(bǔ)充:
-
在注入的時(shí)候,如果是整數(shù)或者浮點(diǎn)型或者布爾類型,則支持字符串轉(zhuǎn)化~
- 只要不要“fan_jian”的去寫,就不會(huì)有時(shí),否則直接拋異常
- 參考平時(shí)寫代碼的賦值操作
效果:
- 找不到的時(shí)候,會(huì)拋異常
- 習(xí)慣:在注釋內(nèi)部的字符串最好不要使用小駝峰,而是下劃線
2.5 數(shù)據(jù)庫的連接時(shí)的需要的信息配置
可見寫起來比較麻煩
-
但是這是必須的,因?yàn)椴恢?spring有 datasource,不止 datasource有 url…
-
至于配置后的細(xì)節(jié)知識(shí) 以及如何操作數(shù)據(jù)庫呢,這是后續(xù)的內(nèi)容,非本文重點(diǎn)~
.properties文件的
優(yōu)點(diǎn)就是:陳列清晰
缺點(diǎn)就是:寫法臃腫
3. .yml文件
3.1 .yml文件的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)就是:寫法歸納性強(qiáng),從簡,可讀性高
缺點(diǎn):初學(xué)者容易犯錯(cuò), 規(guī)矩多~
注意:
- 同一層的內(nèi)容,必須寫在一起,歸納在一起(這是規(guī)矩)
將.properties的內(nèi)容轉(zhuǎn)化過來:
- 其實(shí)也不是很難理解,這樣的層級(jí)結(jié)構(gòu)就更加鮮明了我覺得~
- 注意:原本的key=value對(duì)應(yīng)到這里就是,
key: value
, 冒號(hào)后面的空格不可缺少
效果:
其他的優(yōu)點(diǎn):
- 支持更多的數(shù)據(jù)類型,它可以簡單表達(dá)清單(數(shù)組),散列表,標(biāo)量等數(shù)據(jù)形態(tài)。它使用空白符號(hào)縮進(jìn)和大量依賴外觀的特色,特別適合用來表達(dá)或者編輯數(shù)據(jù)結(jié)構(gòu)、各種配置文件等
- properties也差不多吧,只是沒有明說,官方夸的天花亂墜~
- yml 支持/面向 更多的編程語言,或者說更多的編程語言認(rèn)可yml
- 它不止是 Java中可以使用,在 Golang、高版本的 PHP、Python、Ruby、JS、Perl…中也都可以使用
- 這樣,在開發(fā)的時(shí)候,不同語言的工程師,也可以用統(tǒng)一的配置文件去設(shè)置一些共同配置和共同自定義數(shù)據(jù)
- 最有價(jià)值的優(yōu)點(diǎn),不過現(xiàn)在用不著~
3.2 自定義對(duì)象
其實(shí)這就是一個(gè)對(duì)象,yml有明說~
properties的這個(gè),也是個(gè)對(duì)象,沒有明說~
創(chuàng)建一個(gè)實(shí)體類:
3.3 自定義對(duì)象的獲取
通過Bean的存儲(chǔ)和注入的方式:
- 啟動(dòng)的時(shí)候,系統(tǒng)識(shí)別配置文件,把配置信息賦值給Bean對(duì)象
- 通過屬性注入給成員
識(shí)別配置文件,賦值給Bean的方法:
- 沒錯(cuò)還是注解
屬性注入:
效果:
-
屬性名必須跟設(shè)置是一樣的,否則就是
- 多了白多了,沒有影響
- 少了就少了,顯示原有值
效果:
-
不要去把配置文件中的配置改為小駝峰,因?yàn)橥ㄟ^注入的時(shí)候,配置文件的 key看成全小寫,那么原本的屬性名就對(duì)應(yīng)不上
- 這也是前面不寫小駝峰的原因之一
- 導(dǎo)致 isBro 一直是 false
對(duì)于properties文件,效果也一樣:
3.4 配置集合(簡單的String類型集合)
- 冒號(hào)空格別忘了,否則會(huì)被認(rèn)為是字符串的一部分~
這個(gè)list也可以看成,db_type對(duì)象的一個(gè)屬性
定義對(duì)象的時(shí)候,對(duì)象名不能用下劃線,可以用減號(hào),但是屬性名可以:
所以獲取這個(gè)自定義數(shù)據(jù)的方式跟上面一樣:
效果:
對(duì)于,
List<Integer>
等等,那么就要保證每個(gè)值都嚴(yán)格對(duì)應(yīng)得上,才不會(huì)報(bào)錯(cuò)!
4. 其他配置項(xiàng)
可以參考官方文檔:
Common Application Properties (spring.io)
- 需要用到的時(shí)候去搜即可!
5 properties 和 yml的區(qū)別
-
語法不同
- properties : key=value
- yml : key: value
-
誕生時(shí)機(jī)不同
- properties是 Java早期的配置文件格式
- yml不是Java獨(dú)創(chuàng)的,而是Java兼容yml,yml支持Java
- yml很好的解決數(shù)據(jù)冗余的問題
- yml通用性比較高
- yml支持更多的數(shù)據(jù)類型
6 補(bǔ)充
6.1 命名
配置文件的標(biāo)準(zhǔn)名是:application-xxx,從圖標(biāo)就可以看出異端:
這就是spring的約定,要遵循!
我們有時(shí)候開發(fā),要針對(duì)不同代碼開發(fā)環(huán)境將配置文件分類:
- 本地開發(fā)環(huán)境:application-dev.yml
- 測試環(huán)境:application-test.yml
- 生產(chǎn)環(huán)境:application-prod.yml
6.2 指定配置文件
指定配置文件掃描(非系統(tǒng)配置文件 application.yml/application.properties):
- 但是這只是提供一個(gè)額外的配置文件,優(yōu)先級(jí)不如系統(tǒng)配置文件
- 這種方式對(duì)于普通的properties/yml文件,都適用(包括spring不認(rèn)可的非application-xxx格式的文件)
另一種方式:對(duì)接環(huán)境對(duì)應(yīng)的配置環(huán)境
在系統(tǒng)配置文件中去設(shè)置:
spring:
profiles:
active: xxx
# xxx 代表開發(fā)環(huán)境配置文件格式 application-xxx 的 xxx
- 可見,這種方式就僅僅針對(duì)Spring約定的配置文件~
含義就是,系統(tǒng)配置文件附帶這個(gè)配置文件(或者說是接上了這個(gè)配置文件)
- 理論上,一次運(yùn)行只會(huì)用到一種開發(fā)環(huán)境
- 所以在代碼約定上其實(shí)系統(tǒng)配置文件只能附帶一個(gè)自己的配置文件
效果:
文章到此結(jié)束!謝謝觀看
可以叫我 小馬,我可能寫的不好或者有錯(cuò)誤,但是一起加油鴨??!文章來源:http://www.zghlxwxcb.cn/news/detail-631876.html本文代碼位置:spring_boot_demo1 · 游離態(tài)/馬拉圈2023年8月 - 碼云 - 開源中國 (gitee.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-631876.html
到了這里,關(guān)于【JavaEE】Spring Boot - 配置文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!