成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【方向盤】Spring Boot 2.5.0正式發布,環境變量可指定前綴的功能很贊

開發 前端
北京時間2021-05-21,Spring Boot 2.5.0正式發布。相距約半年,繼2.4.0版本的重大更新之后,此版本能給我們帶來哪些期待呢?

[[437204]]

前言

北京時間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),下面簡單回憶下其新特性:

1.首個使用新版本號規則的Spring Boot版本

什么是Spring技術棧新版本號規則?點這里:Spring改變版本號命名規則:此舉對非英語國家很友好

2.全新的配置文件處理(properties/yaml):這是該版本最重磅的升級,提供了新功能spring.config.import支持,旨在簡化和合理化外部配置的加載方式,不向下兼容哦,這決心足以體現Spring家族進擊云原生的決心。當然,一向關注“向下兼容”的Spring Boot不會突然一刀切,而是提供了外部化配置的兼容方案,配上spring.config.use-legacy-processing = true即可一鍵切回到舊模式(不建議)

3.spring-boot-starter-test中刪除Vintage Engine依賴。Vintage Engine屬于Junit5的一個模塊,它的作用是:允許用JUnit 5運行用JUnit 4編寫的測試,從而提供了向下兼容的能力。這次去掉意味著從Spring Boot 2.4.0開始不再兼容JUnit 4(若實在需要兼容,請自行導入相關jar)

4.不再注冊DefaultServlet。在絕大多數的應用中,Spring MVC提供的DispatcherServlet是唯一需要被注冊的Servlet。若還需要,增加屬性server.servlet.register-default-servlet = true還原

5.Spring Framework升級到5.3.0版本(Spring Framework 5.3.0正式發布,在云原生路上繼續發力)

6.支持Java 15

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.*已被棄用(標記為過時,但并未刪除仍可以使用哈):

  1. # 使用spring.sql.init.username代替 
  2. spring.datasource.schema-username=YourBatman 
  3.  
  4. # 使用spring.sql.init.schema-locations代替 
  5. spring.datasource.schema=mysql/schema.sql 
  6.  
  7. # 使用spring.sql.init.username代替 
  8. spring.datasource.data-username=YourBatman_data 
  9.  
  10. # 使用spring.sql.init.data-locations代替 
  11. spring.datasource.data=mysql/schema.sql 
  12.  
  13. # 使用spring.sql.init.mode代替 
  14. spring.datasource.initialization-mode=embedded 

值得注意的是:新的方式不再支持在配置上為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(…)設置綁定屬性時要使用的前綴,就像這樣:

  1. SpringApplication application = new SpringApplication(MyApp.class); 
  2. application.setEnvironmentPrefix("yourbatman"); 
  3. 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。

其它

  1. /actuator/startup支持Get方法啦(之前只能post方法)
  2. 支持Java 16
  3. 支持Gradle 7
  4. 支持Jetty 10
  5. Apache HttpClient 5配置到WebClient里
  6. 依賴升級:Spring Data 2021.0、Spring Session 2021.0、Spring Kafka 2.7.0

總結

Spring Boot 2.5相較于2.4動作并不大,但也存在一些不兼容性,升級時需多加注意。如若你現在已經在使用Spring Boot 2.4.x版本了,那么升級上來將毫無壓力,推薦升級,為升級到2.6.x打好基礎!

本文轉載自微信公眾號「Java方向盤」

 

責任編輯:姜華 來源: Java方向盤
相關推薦

2021-12-20 08:15:25

SpringFeignClientSpring Clou

2010-12-21 11:36:58

職場

2023-03-10 14:55:28

2021-10-11 08:51:50

JavaMailJDBCJava

2021-10-08 06:50:32

版本歷史代碼

2021-10-25 08:16:20

Java JAX-RS Java 基礎

2018-05-30 14:56:24

Spring輕量化Java 8

2018-06-20 15:42:09

2021-12-13 08:15:01

SpringSpring Boot開發

2021-11-01 07:55:39

Java EE開發項目

2009-06-15 16:28:30

JAVA環境變量

2011-05-31 13:41:50

Android 環境變量

2022-11-26 00:00:03

Spring指南體系

2012-09-18 01:22:33

Java環境變量Classpath

2023-11-01 13:40:25

GolangGo

2021-02-15 15:52:27

Linux環境變量命令

2019-05-17 15:26:06

Spring BootSpring BootJava

2018-12-24 09:15:51

BashLinux環境變量

2021-06-18 08:43:20

環境變量Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九综合 | 91看片网| 538在线精品 | 久久精品色欧美aⅴ一区二区 | 黄色一级免费观看 | 国产精品一区二区三区在线 | 国产精品一区二区三区四区 | 久久久性 | 日韩av看片 | 精品91久久久 | 特黄特色大片免费视频观看 | 北条麻妃国产九九九精品小说 | 中文字幕日韩欧美一区二区三区 | 国产午夜精品久久久久 | 日韩精品成人在线 | 久久无毛 | 日韩一级在线 | 国产清纯白嫩初高生视频在线观看 | 黄色网址在线免费观看 | 中文字幕在线精品 | 欧美精品一区二区三区蜜臀 | 国产精品一二区 | 国产精品欧美一区二区三区不卡 | 日本精品久久久久 | 99精品欧美一区二区蜜桃免费 | 人人人人爽 | 羞羞视频在线观看免费观看 | 亚洲乱码国产乱码精品精的特点 | 日韩成人精品在线观看 | 精品国产乱码久久久久久牛牛 | av在线一区二区三区 | 特级毛片www | 欧美成人一区二免费视频软件 | 久久免费国产 | 成人小视频在线免费观看 | 亚洲综合在线网 | 国产成人综合在线 | 免费的av网站 | 国精产品一区一区三区免费完 | 免费一级黄 | 中国一级特黄毛片大片 |