前言
為了鞏固所學的知識,作者嘗試著開始發(fā)布一些學習筆記類的博客,方便日后回顧。當然,如果能幫到一些萌新進行新技術的學習那也是極好的。作者菜菜一枚,文章中如果有記錄錯誤,歡迎讀者朋友們批評指正。
(博客的參考源碼可以在我主頁的資源里找到,如果在學習的過程中有什么疑問歡迎大家在評論區(qū)向我提出)
發(fā)現寶藏
前些天發(fā)現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家?!緦毑厝肟凇?。
二、SpringBoot配置
1. 了解配置文件的3種格式
- SpringBoot配置文件種類
- 編碼環(huán)境準備(輔助理解)
- 創(chuàng)建新的SptingBoot模塊,勾選web技術支持
- 運行啟動類
從運行結果中我們可以發(fā)現默認服務器為tomcat,默認端口為8080
- 編輯application.properties文件,將端口號改為80并運行啟動類
server.port=80
我們發(fā)現默認端口號變成了80
- 注釋掉application.properties文件的內容,創(chuàng)建編輯application.yml文件,將端口號改為81并運行啟動類
server:
port: 81
我們發(fā)現默認端口號變成了81
- 注釋掉application.yml文件的內容,創(chuàng)建編輯application.yaml文件,將端口號改為82并運行啟動類
server:
port: 82
我們發(fā)現默認端口號變成了82
- 當三種配置文件都開啟,運行啟動類,我們發(fā)現端口號為80;將properties文件注釋掉,運行啟動類,我們發(fā)現默認端口號為81,于是我們得知SpringBoot配置文件加載順序:
application.properties 優(yōu)先于 application.yml 優(yōu)先于 application.yaml
2.yaml格式語法規(guī)則
- 了解yaml格式
- yaml語法格式
1.大小寫敏感
2.屬性層級關系使用多行描述,每行結尾使用冒號結束
3.使用縮進表示層級關系,同層級左側對齊,只允許使用空格 (不允許使用Tab鍵)
4.屬性值前面添加空格(屬性名與屬性值之間使用冒號+空格作為分隔)
5.#表示注釋
6.數組數據在數據書寫位置的下方使用減號作為數據開始符號,每行書寫一個數據,減號與數據間空格分隔
核心規(guī)則: 數據前面要加空格與冒號隔開
3.讀取yaml數據的3種方式
- 方式一:直接調用
使用@Value讀取單個數據,屬性名引用方式: {一級屬性名.二級屬性名}
- 方法二:封裝全部數據到Environment對象
Environment數據類型 結合 @Autowired 注解調用
- 方法三:自定義對象封裝指定數據
將yml文件中的要讀取的信息封裝為實體類進行訪問
- 自定義對象封裝指定數據警告解決方案:添加相關依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4.多環(huán)境開發(fā)配置
- yaml格式寫法(示例)
- properties格式寫法(示例)
- application.properties文件
spring.profiles.active=pro
- application-dev.properties文件
server.port=8080
- application-pro.properties文件
server.port=8081
- application-test.properties文件
server.port=8082
5.多環(huán)境命令行啟動參數設置
- 多環(huán)境啟動命令行格式
- 在設置中修改字符集,支持中文識別,防止打包失敗
- 先執(zhí)行 clean 指令防止上一次的操作影響到了打包后的運行結果,然后再執(zhí)行 package 指令
- 在打包好的jar包文件路徑上輸入cmd進入命令行窗口
- 輸入 java -jar d(jar包命名首字母),然后按tab建自動補全,敲回車,運行程序
- ctrl + c 終止程序,根據yaml配置輸入更換開發(fā)環(huán)境命令行,回車運行
我們發(fā)現端口號由開發(fā)環(huán)境 dev 的 80 變成了 test 環(huán)境的 82
- ctrl + c 終止程序,輸入修改端口號命令行,回車運行
我們發(fā)現 test 開發(fā)環(huán)境的端口號被改成了 88
- 命令行之所以能覆蓋配置文件的優(yōu)先是因為其優(yōu)先級高
[以下為spring官網關于配置的優(yōu)先級的敘述](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config)
6. 多環(huán)境開發(fā)兼容問題
- 情境導入
提出問題:
maven高級(可以在我博客主頁中找到相關文章)中也涉及到了多環(huán)境開發(fā),當maven中和SpringBoot中的yml配置同時出現多環(huán)境開發(fā)管理的時候(比如maven中主導開發(fā)環(huán)境為開發(fā),而SpringBoot中的主導開發(fā)環(huán)境是測試),該如何解決這個沖突呢?
思考:
實際上,當我們的程序部署到服務器后是在服務器上用命令行運行,最終啟動的是打包好的jar包,而不是本地的電腦編譯器,執(zhí)行package指令是maven的功能,所以當存在多環(huán)境開發(fā)兼容問題的時候maven應該起主導作用(maven負責管理版本,yml加載maven的版本)。
- 在pom.xml中設置當前開發(fā)環(huán)境為生產環(huán)境pro,在yml文件中設置開發(fā)環(huán)境為開發(fā)環(huán)境dev,示例代碼如下:
<profiles>
<!--開發(fā)環(huán)境-->
<profile>
<id>dev</id>
<properties>
</properties>
</profile>
<!--生產環(huán)境-->
<profile>
<id>pro</id>
<properties>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--測試環(huán)境-->
<profile>
<id>test</id>
<properties>
</properties>
</profile>
</profiles>
#設置啟用的環(huán)境
spring:
profiles:
active: dev
---
#開發(fā)
spring:
profiles: dev
server:
port: 80
---
#生產
spring:
profiles: pro
server:
port: 81
---
#測試
spring:
profiles: test
server:
port: 82
---
- 執(zhí)行maven的package指令,找到生成的jar包,在對應路徑上輸入cmd,回車,輸入運行jar包的命令行,觀察當 maven(默認環(huán)境是pro,對應服務器端口號為81)和 yaml(默認環(huán)境是dev,對應服務器端口號為80)同時存在多環(huán)境控制時默認開發(fā)環(huán)境是哪個
通過命令行運行結果我們發(fā)現此時默認端口號為80,yml的配置起了主導作用,因為此時maven中的配置還沒加載到y(tǒng)ml配置文件中
- 將maven配置加載到y(tǒng)ml配置文件中,然后將之前打包的jar包刪掉,重新打包,再用命令行啟動
我們發(fā)現此時的端口既不是有maven主導的pro生產環(huán)境(端口81),也不是有yml中的主導環(huán)境pre(端口80)
- 之所以端口號是8080的原因是因為yml中綁定的${profiles.active}沒有解析,我們打開jar包中的BOOT-INF/classes目錄中的application.yml文件可以驗證這一點
- 解決方案:在pom.xml中添加解析插件并重新運行jar包,問題解決
<!--對資源文件開啟對默認占位符的解析-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<encoding>UTF-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
7.配置文件分類
- 情景導入
產品測試的時候jar包運行命令行太多,操作麻煩,容易出錯
- 配置文件分類
SpringBoot中4級配置文件:
1級[高]: file : config/application.yml
2級: file : application.yml
3級: classpath: config/application.yml
4級[低]: classpath: application.yml
作用:
1級與2級留做系統(tǒng)打包后設置通用屬性
3級與4級用于系統(tǒng)開發(fā)階段設置通用屬性
- 3,4級配置文件優(yōu)先級的探討
- 2級配置文件優(yōu)先級的探討
- 1級配置文件優(yōu)先級的探討
- 在target目錄下新建目錄config, 并新建編輯一個默認端口號為89的application.yml配置文件,再次運行打包好的jar包
- 根據報錯信息添加一個子目錄
- 再次運行jar包
文章來源:http://www.zghlxwxcb.cn/news/detail-475371.html
總結
歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯可以點一下關注,點贊,收藏支持一下。
(博客的參考源碼可以在我主頁的資源里找到,如果在學習的過程中有什么疑問歡迎大家在評論區(qū)向我提出)文章來源地址http://www.zghlxwxcb.cn/news/detail-475371.html
到了這里,關于SpringBoot配置 -- SpringBoot快速入門保姆級教程(二)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!