javascript
【方向盘】Spring Boot 2.5.0正式发布,环境变量可指定前缀的功能很赞
少年易學老難成,一寸光陰不可輕。
本文已被https://yourbatman.cn收錄;女媧Knife-Initializr工程可公開訪問啦;程序員專用網盤https://wangpan.yourbatman.cn;技術專欄源代碼大本營:https://github.com/yourbatman/tech-column-learning;公號后臺回復“專欄列表”獲取全部小而美的原創技術專欄
你好,我是方向盤(YourBatman)。筆者的公號是保留地,只分享原創,不轉載、不發商務廣告!
?前言
北京時間2021-05-21,Spring Boot 2.5.0正式發布。相距約半年,繼2.4.0版本的重大更新之后,此版本能給我們帶來哪些期待呢?
2.4.0版本的新特性在這里:Spring Boot 2.4.0正式發布,全新的配置文件加載機制(不向下兼容)
所屬專欄
- 【方向盤】-Spring Boot新特性
相關下載
- 【本專欄源代碼】:https://github.com/yourbatman/FXP-java-ee
- 【技術專欄源代碼大本營】:https://github.com/yourbatman/tech-column-learning
- 【女媧Knife-Initializr工程】訪問地址:http://152.136.106.14:8761
- 【程序員專用網盤】公益上線啦,注冊送1G超小容量,幫你實踐做減法:https://wangpan.yourbatman.cn
- 【Java開發軟件包(Mac)】:https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit
版本約定
- Spring Boot 2.5.0
?正文
回憶2.4版本主要新特性
不僅time flies,Spring Boot的版本也是越發越勤:基本是半年一個中型版本。在肯定社區繁榮的同時,也感嘆一句:學不動了。
Spring Boot 2.4.0是一次非常重要的版本升級(配合有Spring Cloud 2020.0),下面簡單回憶下其新特性:
- 什么是Spring技術棧新版本號規則?點這里:Spring改變版本號命名規則:此舉對非英語國家很友好
2.5版本主要新特性
作為2.4的升級版,其實該版本升級并不算多,了解一下。
?暗黑模式
連iPhone都支持暗黑模式了,Spring豈能不緊跟潮流呢。
其實除了暗黑模式外,字也變更清晰了、外觀更新穎了等等。
?腳本數據源初始化
Spring Boot的腳本數據源初始化功能在開發中用得不多,但在單元測試上用得挺多的(單元測試使用嵌入式DB居多)。該功能簡單的講:在應用啟動階段執行一些SQL腳本(包括DML、DDL)。
說明:默認情況下,SQL腳本也只在嵌入式數據源的時才會執行(該行為由spring.sql.init.mode=xxx控制)
Spring Boot 2.5.0版本重新設計了用于支持schema.sql和data.sql腳本的底層實現,在使用層面用spring.sql.init.*屬性來進行配置,參照本類:
而之前版本的spring.datasource.*已被棄用(標記為過時,但并未刪除仍可以使用哈):
值得注意的是:新的方式不再支持在配置上為schema和data獨立配置憑證(用戶名和密碼),因為絕大部分情況下我們并不需要這么做。倘若真的有需求,Spring Boot建議你去自定義一個org.springframework.jdbc.datasource.init.DataSourceInitializer這樣的Bean即可。
關于數據源初始化,Spring Boot 2.5.0還提供了一個新的注解:@DependsOnDatabaseInitialization。顧名思義,它表示那些需要依賴于DataSource初始化(數據源初始化了自己才能初始化)的Bean可標記上次注解,Spring Boot來管理這個順序。
此注解功能和底層原理同@DependsOn注解,區別在于前者是自動的,而后者是手動的(具體依賴哪些Bean需要自己一一指出)
?系統環境變量可指定前綴
從此版本開始,可以為系統環境變量指定前綴,以便可以在同一環境中運行多個不同的Spring引導應用程序。使用SpringApplication.setEnvironmentPrefix(…?)設置綁定屬性時要使用的前綴,就像這樣:
SpringApplication application = new SpringApplication(MyApp.class); application.setEnvironmentPrefix("yourbatman"); application.run(args);這個功能大大方便了單機混合部署。
?移除Spring Data Solr
由于Spring Data項目在2021.0.0版本已移除了Solr的支持,因此在此版本里Spring Boot也將其干掉了。
值得注意的是:是干掉了Spring Data下的Solr,全路徑org.springframework.boot.autoconfigure.data.solr下的自動配置類SolrRepositoriesAutoConfiguration及其相關API。而自動配置類org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration依舊是存在的哦。
Spring一向是Java領域的風向標,可以看到ElasticSearch的崛起也預示著Solr將要成為歷史。
?/info端點默認不再公開
在此本文啟動應用后訪問curl localhost:8080/actuator/info得到的將是404,但在之前(如2.4.0)和之后(是的你沒聽過,如2.6.0)版本都能正常訪問,所以這還蠻滑稽的。
想自定義打開/關閉Endpoint端點,這樣配即可:management.endpoints.web.exposure.include=info,metrics,xxx
?更改EL表達式實現
通過筆者數據校驗專欄或者Java EE專欄知道:EL是Bean Validation實現必備的功能組件之一。
Spring Boot通過spring-boot-starter-validation啟動器來管理相關依賴,之前用的org.glassfish:jakrta.el,此版本之后改為org.apache.tomcat.embed.tomcat-embed-el(可獨立使用,和Tomcat容器沒關系),對使用者無感哈!
?日志Shutdown Hooks
這是一個比較實用的功能:基于jar的應用程序注冊一個默認的日志關閉鉤子,以確保在JVM退出時釋放日志資源。如果應用是war形式部署則無需此功能,因為web容器/應用容器會負責做相關資源的清理工作。
相關代碼在這,默認情況下該鉤子是會被注冊的:
那鉤子程序到底做了什么呢?其實就是資源回收嘛(比如close()),以Logback為例:
?刪除2.3已被標記為過期的代碼
這是Spring Boot一貫用的規則/規律:標記為@Deprecated的API會在隔一個版本后刪除代碼。
如刪除org.springframework.boot.autoconfigure.elasticsearch.rest.RestClientBuilderCustomizer,代替者:org.springframework.boot.autoconfigure.elasticsearch.RestClientBuilderCustomizer。
?其它
?總結
Spring Boot 2.5相較于2.4動作并不大,但也存在一些不兼容性,升級時需多加注意。如若你現在已經在使用Spring Boot 2.4.x版本了,那么升級上來將毫無壓力,推薦升級,為升級到2.6.x打好基礎!
本專欄上下文
- 【方向盤】Spring Boot 2.4.0正式發布,全新的配置文件加載機制(不向下兼容)
推薦閱讀
- 【方向盤】每人送1G超小容量,“BAT網盤”免費助你做減法
- 【方向盤】螞蟻金服上市了,我不想努力了
- 【方向盤】因“雙減”失業,厲經9面,終獲美團外賣L8的Offer
我是方向盤(YourBatman、方哥):一個前25年還不會寫Hallo World、早已畢業的大齡程序員。網癮失足、清考、延期畢業、房產中介、保險銷售、送外賣…是我不可抹滅的黑標簽
- 👉🏻2006 - 2009:游戲《夢幻西游》骨灰玩家
- 🎓2013.07 清考、畢業答辯3次未通過、延期畢業
- 🏷2013.08-2014.07 寧夏中介公司賣二手房1年,畢業后第1份工作
- ??🏷2014.07-2015.05 荊州/武漢,泰康人壽賣保險3月、餓了么送外賣2月,還有炸雞排、直銷等第2345份工作
- 🏷2015.08 開始從事Java開發,闖過外包,呆過大廠!多年架構經驗,任基礎架構/中間件團隊負責人
- 🏷2021.08 因“雙減政策”失業!歷經9面,終獲美團外賣L8的offer
- 🙅🏻?♀?Java架構師、Spring開源貢獻者、CSDN博客之星年度Top 10、領域建模專家、寫作大賽1/2屆評委
- 📚將出版書籍《Spring奇淫巧技》,致力于國內zui好、zui具深度、zui實用的專欄,為市場貢獻微薄之力
- 現在寫純粹技術專欄(公號后臺回復專欄列表),不嘩眾取寵。如果你也有共鳴,可加我好友(fsx1056342982)一起進步
| 01 | 【方向盤】-程序人生 | 程序人生,人生程序 |
| 02 | 【方向盤】-資訊/新特性 | IDEA、JDK、Spring技術棧…新特性 |
| 03 | 【方向盤】-IntelliJ IDEA | 熟練使用IDEA就相當擁有物理外掛,助你高效編碼 |
| 04 | 【方向盤】-Bean Validation | 熟練掌握數據校驗,減少90%的垃圾代碼 |
| 05 | 【方向盤】-日期時間 | 幫你解決JDK Date、JSR 310日期/其實 的一切問題 |
| 06 | 【方向盤】-Spring類型轉換 | Spring類型轉換-框架設計的基石 |
| 07 | 【方向盤】-Spring static | static關鍵字在Spring里的應用 |
| 08 | 【方向盤】-Cors跨域 | 關于跨域請求問題,本專欄足矣 |
| 09 | 【方向盤】-Jackson | Almost Maybe是最好的Jackson專欄 |
| 10 | 【方向盤】-Spring配置類 | 專講@Configuration配置類,你懂的 |
| 11 | 【方向盤】-Spring技術棧 | 暫無所屬小分類的,Spring技術棧大分類 |
| 12 | 【方向盤】-JDK | 暫無所屬小分類的,JDK技術棧大分類 |
| 13 | 【方向盤】-Servlet | Servlet規范、Web相關內容專題 |
| 14 | 【方向盤】-Java EE | 從Java EE到Jakarta EE,30年彈指一揮間 |
| 15 | 【方向盤】-Spring Boot新特性 | Spring Boot中、大版本發布時的新特性系列專題 |
| 16 | 【方向盤】-Spring Framework新特性 | Spring Framework中、大版本發布時的新特性系列專題 |
| 17 | 【方向盤】-Spring Cloud新特性 | Spring Cloud中、大版本發布時的新特性系列專題 |
| … | … | … |
| 99 | 源代碼庫 | 大多數專欄均配有源代碼,都在這里 |
- 源代碼庫地址:https://github.com/yourbatman/tech-column-learning
- CSDN主頁:https://blog.csdn.net/f641385712
- 掘金主頁:https://juejin.cn/user/430664289367192
- 博客園主頁:https://www.cnblogs.com/yourbatman
- 個人博客主頁:https://yourbatman.cn
- 個人網盤主頁:https://wangpan.yourbatman.cn
總結
以上是生活随笔為你收集整理的【方向盘】Spring Boot 2.5.0正式发布,环境变量可指定前缀的功能很赞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HC3i论坛电子病历系统热门资料30篇(
- 下一篇: 华为数通(一):如何使用ssh cons