Spring Boot 2.6 重磅發(fā)布!!!
等了很久, Spring Boot 2.6 終于在昨天發(fā)布啦!

我還是今天無聊逛推特的時(shí)候看到自己關(guān)注的一個(gè) Spring 項(xiàng)目的一個(gè)開發(fā)大佬發(fā)的動(dòng)態(tài)才知道的。看來多關(guān)注一些大佬了解技術(shù)最新動(dòng)向還是很有必要的!

Spring Boot 2.6 重要改動(dòng)
這次更新為我們帶來很多好用的新特性/改進(jìn),我這里簡(jiǎn)單總結(jié)一下。
詳細(xì)的 Spring Boot 2.6 改動(dòng)信息,小伙伴們可以在這里找到:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes 。你可以結(jié)合 Spring Boot 2.6 的官方文檔來學(xué)習(xí),地址:https://docs.spring.io/spring-boot/docs/current/reference/html/index.html 。
info 端點(diǎn)暴露?Java 運(yùn)行信息
Spring Boot Actuator 是 Spring Boot 官方提供的監(jiān)控模塊,提供了很多開箱即用的端點(diǎn)(比如/health、/metrics 、/info)幫助我們來監(jiān)控和管理 Spring Boot 應(yīng)用。
幾行代碼,我們就可以為 Spring Boot 項(xiàng)目引入 Spring Boot Actuator 。
pom.xml
<dependency>
????<groupId>org.springframework.bootgroupId>
????<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
application.properties
# 暴露 info 端點(diǎn)
management.endpoints.web.exposure.include=info
management.info.java.enabled=true
Spring Boot 2.6 版本對(duì) info 端點(diǎn)進(jìn)行了增強(qiáng)改進(jìn):

metrics 端點(diǎn)暴露啟動(dòng)和磁盤空間信息
application.properties
management.endpoints.web.exposure.include=metrics
metrics 端點(diǎn)分別新增了 2 個(gè)應(yīng)用程序啟動(dòng)和磁盤空間信息的指標(biāo)。

獲取某個(gè)具體的指標(biāo)的詳細(xì)信息: http://localhost:8080/actuator/metrics/{MetricName} 。

默認(rèn)情況下禁止循環(huán)引用
如果兩個(gè)類互相引用對(duì)方,那就會(huì)發(fā)生循環(huán)依賴問題。
@Service
public?class?OrderService?{
????@Autowired
????private?UserService?userService;
}
@Service
public?class?UserService?{
????@Autowired
????private?OrderService?orderService;
}
在 Spring Boot 2.6 版本中,循環(huán)引用默認(rèn)情況下已經(jīng)被禁止了。如果你的項(xiàng)目存在循環(huán)引用問題,那你在啟動(dòng)項(xiàng)目的時(shí)候就會(huì)報(bào)錯(cuò)。

如果你想關(guān)閉禁止循環(huán)引用的話,可以直接修改配置 spring.main.allow-circular-references為true 。
WebTestClient 支持測(cè)試 Spring MVC
WebTestClient 誕生之初主要是為了測(cè)試 Spring WebFlux 項(xiàng)目,這次改版之后,WebTestClient 已經(jīng)可以支持普通的 Spring MVC 項(xiàng)目。
@SpringBootTest
@AutoConfigureWebTestClient
class?MyMockWebTestClientTests?{
????@Autowired
????WebTestClient?webClient;
????@Test
????void?helloWorldTest()?{
????????webClient
????????????????.get().uri("/hello")
????????????????.exchange()
????????????????.expectStatus().isOk()
????????????????.expectBody(String.class).isEqualTo("Hello?World!");
????}
}
Docker 鏡像構(gòu)建功能增強(qiáng)
Spring Boot 官方提供了 docker-maven-plugin 插件來幫助我們構(gòu)建 Docker 鏡像。
在 Spring Boot 2.6 版本中,這個(gè)插件的功能得到了小幅加強(qiáng):
支持自定義鏡像設(shè)置額外的 Tags 網(wǎng)絡(luò)配置 構(gòu)建緩存配置
Maven 構(gòu)建信息的默認(rèn)時(shí)間
Maven 插件在構(gòu)建項(xiàng)目的時(shí)候可以使用 project.build.outputTimestamp屬性值作為默認(rèn)構(gòu)建時(shí)間。
自動(dòng)啟用 Redis 連接池
你的項(xiàng)目如果依賴了 commons-pool2 的話,Redis(Jedis 和 Lettuce)將會(huì)自動(dòng)啟動(dòng)連接池。
如果你想禁用自動(dòng)啟用連接池,可以設(shè)置spring.redis.jedis.pool.enabled或spring.redis.lettuce.pool.enabled為false 。
總結(jié)

相比于上一個(gè)版本,Spring Boot 2.6 的改進(jìn)還是比較多的,不過都是比較小的改動(dòng)和升級(jí),簡(jiǎn)單了解和學(xué)習(xí)一下就好。沒有太大必要升級(jí),帶來收益比較小。
我是 Guide哥,一個(gè)工作2年有余,接觸編程已經(jīng)6年有余的程序員。大三開源 JavaGuide,目前已經(jīng) 100k+ Star。未來幾年,希望持續(xù)完善 JavaGuide,爭(zhēng)取能夠幫助更多學(xué)習(xí) Java 的小伙伴!共勉!凎!點(diǎn)擊即可了解我的個(gè)人經(jīng)歷。
簡(jiǎn)歷指導(dǎo)/Java 學(xué)習(xí)/面試指導(dǎo)/面試小冊(cè),歡迎加入我的知識(shí)星球(公眾號(hào)后臺(tái)回復(fù)“星球”即可)。

