Spring-boot 2.6.x新特性

Spring Boot 2.6版本引入了多项重要更新,包括默认禁止循环依赖、嵌入式MongoDB的支持、网络资源配置的变化、默认匹配策略的调整等。本文将详细介绍这些新特性,并给出相应的配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引子

自Spring-boot 2.6.0发以来,还没来得及深入研究下其新特性,直到朋友问起关于Spring循环依赖时正好使用了最新版本的Spring-boot,讲解过程中编写的示例代码运行出错:

┌─────┐
|  a (field private com.demo.TestB com.demo.TestA.b)
↑     ↓
|  b (field private com.demo.TestA com.demo.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.

二、Spring-boot 2.6新特性

下面列举几个自认觉得需要注意的新特性,详细的新特性参见spring官网呈现:Spring boot 2.6 新特性

1、默认禁止了循环依赖

关于Spring的循环依赖问题,也是面试中频繁遇到的问题之一。通常情况下一个合理的设计是完全可以避免对象的循环依赖的,但是也不能排除会有那么些奇葩的情况会出现循环依赖,Spring Boot也提供了折中解决办法,在报错信息中已经明示:

As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.

需要我们在配置文件application.yml中配置allow-circular-referencestrue,程序依然可以正常启动:

spring:
    main: 
        allow-circular-references: true

2、嵌入了MongoDB

若要使用嵌入式 MongoDB,现在必须设置spring.mongodb.embedded.version属性(即指定使用的MongoDB版本号),确保嵌入式支持使用的 MongoDB 版本与应用程序将在生产中使用的 MongoDB 版本相匹配。

spring:
    mongodb.embedded.version: 3.12.7

3、网络资源配置

直接注入不再有效,改为ResourcesWebPropertiesWebProperties注入。

4、删除了几个依赖关系

  • JBoss Transaction SPI
    如果项目需要,需要自行引入依赖:org.jboss:jboss-transaction-spiorg.jboss:jboss-transaction-spi
  • Nimbus DS
    如果项目需要,需要自行引入依赖:com.nimbusds:oauth2-oidc-sdkicom.nimbusds:nimbus-jose-jwt
  • HAL Browser
    如果项目需要,需要自行引入依赖:org.webjars:hal-browserorg.webjars:hal-browser

5、默认使用全新匹配策略

请求路径与 Spring MVC 处理映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser。你可以设置spring.mvc.pathmatch.matching-strategy为ant-path-matcher来改变它。

  • 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中间之外,其它的匹配规则从行为上均保持和AntPathMatcher一致,并且还新增了强大的 {*pathVariable} 的支持。

6、端点现在可以在密钥下公开 Java 运行时信息

如下:

{
  "java": {
    "vendor": "Zulu",
    "version": "17",
    "runtime": {
      "name": "OpenJDK Runtime Environment",
      "version": "25.292-b10"
    },
    "jvm": {
      "name": "OpenJDK 64-Bit Server VM",
      "vendor": "Zulu",
      "version": "25.292-b10"
    }
  }
}

7、其他变化

  • Servlet应用现在支持在Cookie中添加SameSite。
  • 支持在主端口或管理端口上配置健康组。
  • 在 Spring Boot 2.4 中弃用的类、方法和属性已在此版本中删除。
  • 支持 Log4j2 复合配置
  • 支持构建信息属性排除

另外需要注意的是,Spring Boot每年会在5月份和11月份发布两个中型版本,每个中型版本提供1年的免费支持,也就意味着2.4.x已经停止了版本停止(免费)支持。不过对本次版本更新点有所了解即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值