昨天,Spring官网正式公布了Spring Boot往年最初一个个性版本:2.6.0

同时,也发表了2.4.x版本的终结。

那么这个新版本又带来了哪些新个性呢?上面就一起跟着DD来看看吧!

重要个性

1. Servlet利用反对在 Cookie 中配置 SameSite 属性

该属性可通过server.session.cookie.same-site属性来配置,共有三个可选值:

  • Strict 严格模式,必须同站申请能力发送 cookie
  • Lax 宽松模式,平安的跨站申请能够发送 cookie
  • None 禁止 SameSite 限度,必须配合 Secure 一起应用

2. 反对为主利用端口和治理端口配置衰弱组

这在 Kubernetes 等云服务环境中很有用。在这种环境下,出于平安目标,为执行器端点应用独自的治理端口是很常见的。领有独自的端口可能会导致不牢靠的健康检查,因为即便健康检查胜利,主应用程序也可能无奈失常工作。

以往传统的配置会将所有Actuator端点都放在一个独自的端口上,并将用于检测利用状态的衰弱组放在主端口的附加门路下。

3. 加强/info端点,退出Java Runtime信息

加强后的例子:

{  "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"    }  }}

该信息能够通过这个属性开启或敞开:

management.info.java.enabled=true

4. 反对应用WebTestClient来测试Spring MVC

开发人员能够应用 WebTestClient 在模仿环境中测试 WebFlux 应用程序,或针对实时服务器测试任何 Spring Web 应用程序。

这次加强后,开发者能够在Mock环境中应用 @AutoConfigureMockMvc 正文的类,就能够轻松注入 WebTestClient。 这样编写测试就比之前容易多了。

5. 减少spring-rabbit-stream的自动化配置

这次更新增加了 Spring AMQP 的新 spring-rabbit-stream 模块的主动配置。

当spring.rabbitmq.listener.type属性设置为stream时, StreamListenerContainer 是主动配置的。

spring.rabbitmq.stream.*属性可用于配置对broker的拜访,spring.rabbitmq.listener.stream.native-listener 可用于启用native listener

6. 反对/env端点和configprops配置属性的自定义脱敏

尽管 Spring Boot 之前曾经能够解决 /env 和 /configprops 端点中存在的敏感值,只须要能够通过配置属性来管制即可。但还有一种状况,用户可能心愿依据属性源自哪个 PropertySource 来利用清理。

例如,Spring Cloud Vault 应用 Vault 来存储加密值并将它们加载到 Spring 环境中。因为所有值都是加密的,因而将整个属性源中的每个键的值脱敏是有意义的。能够通过增加类型为 SanitizingFunction 的 @Bean 来配置此类自定义脱敏规定。

棘手举荐一下我始终在连载的收费教程:Spring Boot教程能够点击中转!。跟很多其余教程不同。这个教程不光兼顾了1.x和2.x版本。同时,对于每次的更新,都会抉择一些相干内容修补Tips,所以对各种不同阶段的读者长期都会有一些播种。如果你感觉不错,记得转发反对一下!

其余变更

1. Reactive Session 个性化

以后版本能够动静配置 reactive session 的有效期

server.reactive.session.timeout=30

2. Redis 链接主动配置链接池

当利用依赖中蕴含 commons-pool2.jar 会主动配置 redis 链接池 (Jedis Lettuce 都反对)。如果你想敞开则通过如下属性:

spring.redis.jedis.pool.enabled=falsespring.redis.lettuce.pool.enabled=false

3. 构建信息个性化

  • 通过 spring-boot-maven-plugin 反对主动生成此次构建信息的 build-info.properties
    <plugin>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-maven-plugin</artifactId>      <configuration>           <excludeInfoProperties>            <excludeInfoProperty>version</excludeInfoProperty>         </excludeInfoProperties>      </configuration>    </plugin>

4. Metrics新增指标

利用启动的两个新指标:

application.started.time: 启动应用程序所需的工夫application.ready.time:  启动利用到对外提供服务所需工夫

磁盘空间的两个指标:

disk.free: 磁盘闲暇空间disk.total: 磁盘总空间

5. Docker镜像的构建

加强docker-maven-plugin插件的性能:

  • 为自定义镜像设置tags标签
  • 网络配置参数,可用于Cloud Native Buildpacks的构建过程
  • 反对应用 buildCache 和 launchCache 配置参数自定义用于缓存层的名称,这些层由构建包提供给构建的镜像

6. 移除 2.4 版本中的过期属性

因为2.4版本实现历史使命,因而有大量过期属性被移除,最近要降级的小伙伴肯定要关注一下这部分内容,因为你原来的配置会生效!

对于Spring MVC 和 servlet 局部属性:

旧属性(已删除)新属性
spring.web.localespring.mvc.locale
spring.web.locale-resolverspring.mvc.locale-resolver
spring.web.resources.*spring.resources.*
management.server.base-pathmanagement.server.servlet.context-path

对于Elasticsearch属性的变更:

因为内容较多,这里就不齐全贴出来了,有趣味的能够看看文末参考资料中的官网信息。

7. 默认状况齐全禁止Bean的循环援用

还记得前几天我公布的这篇:为什么IDEA不举荐你应用@Autowired ?

对于激励大家用结构器的形式,还受到了一些网友的讥嘲。

那么在2.6.0之后,如果小伙伴仍然感觉循环依赖无所谓,还保持要用上面的这种模式:

那么,你将播种上面这样的报错:

┌─────┐|  a (field private com.example.demo.B com.example.demo.A.b)↑     ↓|  b (field private com.example.demo.A com.example.demo.B.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官网这样做,也是为了激励大家养成不要有循环依赖的好习惯。

但对于屎山我的项目,可能这样的要求对于开发者会很苦楚。所以,你也能够通过上面的配置,放开不容许循环依赖的要求:

spring.main.allow-circular-references=true

8. SpringMVC 默认门路匹配策略

Spring MVC 处理程序映射匹配申请门路的默认策略已从 AntPathMatcher 更改为PathPatternParser

Actuator端点当初也应用基于 PathPattern 的 URL 匹配。须要留神的是,Actuator端点的门路匹配策略无奈通过配置属性进行配置。

如果须要将默认切换回 AntPathMatcher,能够将 spring.mvc.pathmatch.matching-strategy 设置为 ant-path-matcher,比方上面这样:

spring.mvc.pathmatch.matching-strategy=ant-path-matcher

好了,对于Spring Boot 2.6的版本解析到这里完结了。

最初,再举荐一下我始终在连载的收费教程:Spring Boot教程能够点击中转!

跟很多其余教程不同。这个教程不光兼顾了1.x和2.x版本。同时,对于每次的更新,都会抉择一些相干内容修补Tips,所以对各种不同阶段的读者长期都会有一些播种。如果你感觉不错,记得转发反对一下!

参考资料

  • https://spring.io/blog/2021/1...
  • https://github.com/spring-pro...
  • https://www.oschina.net/news/...

好了,明天的学习就到这里!如果您学习过程中如遇艰难?能够退出咱们超高品质的Spring技术交换群,参加交换与探讨,更好的学习与提高!更多Spring Boot教程能够点击中转!,欢送珍藏与转发反对!

欢送关注我的公众号:程序猿DD,分享其余中央看不到的常识与思考