<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Boot 2.5.0正式發(fā)布,環(huán)境變量可指定前綴的功能很贊

          共 4362字,需瀏覽 9分鐘

           ·

          2021-12-09 18:20

          Spring Boot 2.5.0正式發(fā)布,環(huán)境變量可指定前綴的功能很贊


          ?前言

          北京時(shí)間2021-05-21,Spring Boot 2.5.0正式發(fā)布。相距約半年,繼2.4.0版本的重大更新之后,此版本能給我們帶來(lái)哪些期待呢?

          2.4.0版本的新特性在這里:Spring Boot 2.4.0正式發(fā)布,全新的配置文件加載機(jī)制(不向下兼容)

          所屬專欄

          相關(guān)下載

          • 【本專欄源代碼】:https://github.com/yourbatman/FXP-java-ee
          • 【技術(shù)專欄源代碼大本營(yíng)】:https://github.com/yourbatman/tech-column-learning
          • 【女?huà)zKnife-Initializr工程】訪問(wèn)地址:http://152.136.106.14:8761
          • 【程序員專用網(wǎng)盤(pán)】公益上線啦,注冊(cè)送1G超小容量,幫你實(shí)踐做減法https://wangpan.yourbatman.cn
          • 【Java開(kāi)發(fā)軟件包(Mac)】:https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit

          版本約定

          • Spring Boot 2.5.0

          ?正文

          回憶2.4版本主要新特性

          不僅time flies,Spring Boot的版本也是越發(fā)越勤:基本是半年一個(gè)中型版本。在肯定社區(qū)繁榮的同時(shí),也感嘆一句:學(xué)不動(dòng)了。

          Spring Boot 2.4.0是一次非常重要的版本升級(jí)(配合有Spring Cloud 2020.0),下面簡(jiǎn)單回憶下其新特性:

          1. 首個(gè)使用新版本號(hào)規(guī)則的Spring Boot版本
          2. 全新的配置文件處理(properties/yaml):這是該版本最重磅的升級(jí),提供了新功能spring.config.import支持,旨在簡(jiǎn)化和合理化外部配置的加載方式,不向下兼容哦,這決心足以體現(xiàn)Spring家族進(jìn)擊云原生的決心。當(dāng)然,一向關(guān)注“向下兼容”的Spring Boot不會(huì)突然一刀切,而是提供了外部化配置的兼容方案,配上spring.config.use-legacy-processing = true即可一鍵切回到舊模式(不建議)
          3. spring-boot-starter-test中刪除Vintage Engine依賴。Vintage Engine屬于Junit5的一個(gè)模塊,它的作用是:允許用JUnit 5運(yùn)行用JUnit 4編寫(xiě)的測(cè)試,從而提供了向下兼容的能力。這次去掉意味著從Spring Boot 2.4.0開(kāi)始不再兼容JUnit 4(若實(shí)在需要兼容,請(qǐng)自行導(dǎo)入相關(guān)jar)
          4. 不再注冊(cè)DefaultServlet。在絕大多數(shù)的應(yīng)用中,Spring MVC提供的DispatcherServlet是唯一需要被注冊(cè)的Servlet。若還需要,增加屬性server.servlet.register-default-servlet = true還原
          5. Spring Framework升級(jí)到5.3.0版本(Spring Framework 5.3.0正式發(fā)布,在云原生路上繼續(xù)發(fā)力
          6. 支持Java 15

          2.5版本主要新特性

          作為2.4的升級(jí)版,其實(shí)該版本升級(jí)并不算多,了解一下。

          ?暗黑模式

          連iPhone都支持暗黑模式了,Spring豈能不緊跟潮流呢。其實(shí)除了暗黑模式外,字也變更清晰了、外觀更新穎了等等。

          ?腳本數(shù)據(jù)源初始化

          Spring Boot的腳本數(shù)據(jù)源初始化功能在開(kāi)發(fā)中用得不多,但在單元測(cè)試上用得挺多的(單元測(cè)試使用嵌入式DB居多)。該功能簡(jiǎn)單的講:在應(yīng)用啟動(dòng)階段執(zhí)行一些SQL腳本(包括DML、DDL)。

          說(shuō)明:默認(rèn)情況下,SQL腳本也只在嵌入式數(shù)據(jù)源的時(shí)才會(huì)執(zhí)行(該行為由spring.sql.init.mode=xxx控制)

          Spring Boot 2.5.0版本重新設(shè)計(jì)了用于支持schema.sqldata.sql腳本的底層實(shí)現(xiàn),在使用層面用spring.sql.init.*屬性來(lái)進(jìn)行配置,參照本類:而之前版本的spring.datasource.*已被棄用(標(biāo)記為過(guò)時(shí),但并未刪除仍可以使用哈):


          #?使用spring.sql.init.username代替
          spring.datasource.schema-username=YourBatman

          #?使用spring.sql.init.schema-locations代替
          spring.datasource.schema=mysql/schema.sql

          #?使用spring.sql.init.username代替
          spring.datasource.data-username=YourBatman_data

          #?使用spring.sql.init.data-locations代替
          spring.datasource.data=mysql/schema.sql

          #?使用spring.sql.init.mode代替
          spring.datasource.initialization-mode=embedded

          值得注意的是:新的方式不再支持在配置上為schema和data獨(dú)立配置憑證(用戶名和密碼),因?yàn)榻^大部分情況下我們并不需要這么做。倘若真的有需求,Spring Boot建議你去自定義一個(gè)org.springframework.jdbc.datasource.init.DataSourceInitializer這樣的Bean即可。

          關(guān)于數(shù)據(jù)源初始化,Spring Boot 2.5.0還提供了一個(gè)新的注解:@DependsOnDatabaseInitialization。顧名思義,它表示那些需要依賴于DataSource初始化(數(shù)據(jù)源初始化了自己才能初始化)的Bean可標(biāo)記上次注解,Spring Boot來(lái)管理這個(gè)順序。

          此注解功能和底層原理同@DependsOn注解,區(qū)別在于前者是自動(dòng)的,而后者是手動(dòng)的(具體依賴哪些Bean需要自己一一指出)

          ?系統(tǒng)環(huán)境變量可指定前綴

          從此版本開(kāi)始,可以為系統(tǒng)環(huán)境變量指定前綴,以便可以在同一環(huán)境中運(yùn)行多個(gè)不同的Spring引導(dǎo)應(yīng)用程序。使用SpringApplication.setEnvironmentPrefix(…)設(shè)置綁定屬性時(shí)要使用的前綴,就像這樣:

          SpringApplication?application?=?new?SpringApplication(MyApp.class);
          application.setEnvironmentPrefix("yourbatman");
          application.run(args);

          這個(gè)功能大大方便了單機(jī)混合部署

          ?移除Spring Data Solr

          由于Spring Data項(xiàng)目在2021.0.0版本已移除了Solr的支持,因此在此版本里Spring Boot也將其干掉了。

          值得注意的是:是干掉了Spring Data下的Solr,全路徑org.springframework.boot.autoconfigure.data.solr下的自動(dòng)配置類SolrRepositoriesAutoConfiguration及其相關(guān)API。而自動(dòng)配置類org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration依舊是存在的哦。

          Spring一向是Java領(lǐng)域的風(fēng)向標(biāo),可以看到ElasticSearch的崛起也預(yù)示著Solr將要成為歷史。

          ?/info端點(diǎn)默認(rèn)不再公開(kāi)

          在此本文啟動(dòng)應(yīng)用后訪問(wèn)curl localhost:8080/actuator/info得到的將是404,但在之前(如2.4.0)和之后(是的你沒(méi)聽(tīng)過(guò),如2.6.0)版本都能正常訪問(wèn),所以這還蠻滑稽的。

          想自定義打開(kāi)/關(guān)閉Endpoint端點(diǎn),這樣配即可:management.endpoints.web.exposure.include=info,metrics,xxx

          ?更改EL表達(dá)式實(shí)現(xiàn)

          通過(guò)筆者數(shù)據(jù)校驗(yàn)專欄或者Java EE專欄知道:EL是Bean Validation實(shí)現(xiàn)必備的功能組件之一。

          Spring Boot通過(guò)spring-boot-starter-validation啟動(dòng)器來(lái)管理相關(guān)依賴,之前用的org.glassfish:jakrta.el,此版本之后改為org.apache.tomcat.embed.tomcat-embed-el(可獨(dú)立使用,和Tomcat容器沒(méi)關(guān)系),對(duì)使用者無(wú)感哈!

          ?日志Shutdown Hooks

          這是一個(gè)比較實(shí)用的功能:基于jar的應(yīng)用程序注冊(cè)一個(gè)默認(rèn)的日志關(guān)閉鉤子,以確保在JVM退出時(shí)釋放日志資源。如果應(yīng)用是war形式部署則無(wú)需此功能,因?yàn)閣eb容器/應(yīng)用容器會(huì)負(fù)責(zé)做相關(guān)資源的清理工作。

          相關(guān)代碼在這,默認(rèn)情況下該鉤子是會(huì)被注冊(cè)的:那鉤子程序到底做了什么呢?其實(shí)就是資源回收嘛(比如close()),以Logback為例:

          ?刪除2.3已被標(biāo)記為過(guò)期的代碼

          這是Spring Boot一貫用的規(guī)則/規(guī)律:標(biāo)記為@Deprecated的API會(huì)在隔一個(gè)版本后刪除代碼。

          如刪除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. 依賴升級(jí):Spring Data 2021.0、Spring Session 2021.0、Spring Kafka 2.7.0

          ?總結(jié)

          Spring Boot 2.5相較于2.4動(dòng)作并不大,但也存在一些不兼容性,升級(jí)時(shí)需多加注意。如若你現(xiàn)在已經(jīng)在使用Spring Boot 2.4.x版本了,那么升級(jí)上來(lái)將毫無(wú)壓力,推薦升級(jí),為升級(jí)到2.6.x打好基礎(chǔ)!

          瀏覽 158
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性爱成人视频网站 | 国产夜色视频 | 国产视频1区 | 操B视频在线 | 欧美成人无码一级A片蜜芽 |