javascript
SpringBoot 2.6.0发布:禁止循环依赖,还有哪些实用的更新?
今日推薦
Spring Boot 2.6.0已經(jīng)正式發(fā)布,快看看作了哪些升級(jí)。
1、禁止了循環(huán)依賴
循環(huán)依賴問(wèn)題一直困擾大家,也是面試常問(wèn)題目之一
Spring Boot 2.6.0之后,如果程序中存在循環(huán)依賴問(wèn)題,啟動(dòng)上就會(huì)失敗,報(bào)錯(cuò):
┌─────┐ |??a?(field?private?com.zhiyin.TestB?com.zhiyin.TestA.b) ↑?????↓ |??b?(field?private?com.zhiyin.TestA?com.zhiyin.TestB.a) └─────┘Action:Relying?upon?circular?references?is?discouraged?and?they?are?prohibited?by?default.?Update?your?application?to?remove?the?dependency?cycle?between?beans.?As?a?last?resort,?it?may?be?possible?to?break?the?cycle?automatically?by?setting?spring.main.allow-circular-references?to?true.如果程序設(shè)計(jì)非常合理,完全避免了循環(huán)依賴,是最完美的。如果實(shí)在不能,Spring Boot也提供了折中解決辦法,在報(bào)錯(cuò)信息中已經(jīng)明示:
As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
需要我們?cè)谂渲梦募pplication.properties里加上這個(gè)屬性:
spring.main.allow-circular-references?=?true程序依然可以正常啟動(dòng)。
2、新增自定義脫敏規(guī)則
Spring Boot 2.6.0 支持/env端點(diǎn)和configprops配置屬性的自定義脫敏,自定義SanitizingFunction類型的Bean即可實(shí)現(xiàn),如下:
@Bean public?SanitizingFunction?pwdSanitizingFunction()?{return?data?->?{org.springframework.core.env.PropertySource<?>?propertySource?=?data.getPropertySource();String?key?=?data.getKey();//?僅對(duì)redis.properties里面的某些key做脫敏if?(propertySource.getName().contains("redis.properties"))?{if?(key.equals("redis.pwd"))?{return?data.withValue(SANITIZED_VALUE);}}return?data;}; }對(duì)于部分?jǐn)?shù)據(jù)脫敏,這個(gè)改進(jìn)非常靈活,很有用。
3、Redis自動(dòng)開啟連接池
在2.6.0之前的版本,配置Redis時(shí)是否啟用連接池是由使用者指定,2.6.0之后是默認(rèn)開啟,如果需要關(guān)閉,則需要配置:
spring.redis.jedis.pool.enabled?=?false或者
spring.redis.lettuce.pool.enabled?=?false說(shuō)明Spring Boot支持大家使用Redis連接池。
4、支持使用WebTestClient來(lái)測(cè)試Spring MVC
開發(fā)人員可以使用 WebTestClient 在模擬環(huán)境中測(cè)試程序,只需要在Mock環(huán)境中使用 @AutoConfigureMockMvc 注釋,就可以輕松注入 WebTestClient。,省去編寫測(cè)試程序。
5、默認(rèn)使用全新匹配策略
請(qǐng)求路徑與 Spring MVC 處理映射匹配的默認(rèn)策略已從AntPathMatcher更改為PathPatternParser。你可以設(shè)置spring.mvc.pathmatch.matching-strategy為ant-path-matcher來(lái)改變它。
2.6.0之前:
public?static?class?Pathmatch?{private?MatchingStrategy?matchingStrategy?=?MatchingStrategy.ANT_PATH_MATCHER; }2.6.0之后:
public?static?class?Pathmatch?{private?MatchingStrategy?matchingStrategy?=?MatchingStrategy.PATH_PATTERN_PARSER; }兩者差異上:PathPattern去掉了Ant字樣,但保持了很好的向下兼容性:除了不支持將**寫在path中間之外,其它的匹配規(guī)則從行為上均保持和AntPathMatcher一致,并且還新增了強(qiáng)大的{*pathVariable}的支持。
6、增強(qiáng)了/info管理端點(diǎn),加上了Java運(yùn)行時(shí)信息
如下:
{"java":?{"vendor":?"BellSoft","version":?"17","runtime":?{"name":?"OpenJDK?Runtime?Environment","version":?"17+35-LTS"},"jvm":?{"name":?"OpenJDK?64-Bit?Server?VM","vendor":?"BellSoft","version":?"17+35-LTS"}} }7、其他變化
Servlet應(yīng)用現(xiàn)在支持在Cookie中添加SameSite。
支持在主端口或管理端口上配置健康組。
在 Spring Boot 2.4 中棄用的類、方法和屬性已在此版本中刪除。
支持 Log4j2 復(fù)合配置
支持構(gòu)建信息屬性排除
另外需要注意的是,Spring Boot每年會(huì)在5月份和11月份發(fā)布兩個(gè)中型版本,每個(gè)中型版本提供1年的免費(fèi)支持,那也就意味著2.4.x已經(jīng)停止了版本停止(免費(fèi))支持。不過(guò)對(duì)本次版本更新點(diǎn)有所了解即可,等待下次大版本更新再去學(xué),一更新馬上用新的實(shí)在學(xué)不動(dòng)~~
參考:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6.0-Configuration-Changelog
推薦文章1、一款高顏值的 SpringBoot+JPA 博客項(xiàng)目2、超優(yōu) Vue+Element+Spring 中后端解決方案3、推薦幾個(gè)支付項(xiàng)目!4、推薦一個(gè) Java 企業(yè)信息化系統(tǒng)5、一款基于 Spring Boot 的現(xiàn)代化社區(qū)(論壇/問(wèn)答/社交網(wǎng)絡(luò)/博客)總結(jié)
以上是生活随笔為你收集整理的SpringBoot 2.6.0发布:禁止循环依赖,还有哪些实用的更新?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 扔掉工具类,Mybatis一个简单配置搞
- 下一篇: SpringBoot快速开发利器:Spr