当前位置: 首页 > 后端技术 > Java

SpringBoot2.6.0正式发布:默认禁止循环依赖,增强Docker镜像构建……

时间:2023-04-01 22:52:33 Java

昨天,Spring正式发布了今年SpringBoot的最后一个特性版本:2.6.0同时,同时也宣布了2.4.x版本的结束那么这个新版本带来了哪些新特性呢?跟着DD一起来看看吧!重要特性1.Servlet应用程序支持在cookie中配置SameSite属性。该属性可以通过server.session.cookie.same-site属性进行配置。可选值有3个:Strict严格模式,同站请求必须发送cookieLaxloosemode,Secure跨站请求可以发送cookieNone禁用SameSite限制,必须和Secure一起使用2.支持配置健康组用于主要应用端口和管理端口,这在Kubernetes等云服务环境中很有用。在这种环境中,出于安全目的,通常为执行器端点使用单独的管理端口。拥有单独的端口会导致不可靠的健康检查,因为即使健康检查成功,主应用程序也可能无法正常工作。过去,传统的配置会将所有Actuator端点放在一个单独的端口上,将用于检测应用程序状态的健康组放在主端口的附加路径下。3.增强/info端点,增加JavaRuntime信息增强示例:{"java":{"vendor":"BellSoft","version":"17","runtime":{"name":"OpenJDKRuntimeEnvironment","version":"17+35-LTS"},"jvm":{"name":"OpenJDK64-BitServerVM","vendor":"BellSoft","version":"17+35-LTS"}}}这个信息可以通过这个属性开启或关闭:management.info.java.enabled=true4.支持使用WebTestClient测试SpringMVC开发者可以使用WebTestClient在模拟环境中测试WebFlux应用,或者用于实时服务器测试任何SpringWeb应用程序。此次增强后,开发者可以在Mock环境中使用@AutoConfigureMockMvc注解类轻松注入WebTestClient。这使得编写测试比以前容易得多。5.增加spring-rabbit-stream的自动配置本次更新增加了SpringAMQP新的spring-rabbit-stream模块的自动配置。当spring.rabbitmq.listener.type属性设置为流时,将自动配置StreamListenerContainer。spring.rabbitmq.stream.*属性可用于配置对代理的访问,而spring.rabbitmq.listener.stream.native-listener可用于启用本机listener6。支持/env端点和configprops配置属性的自定义脱敏虽然之前的SpringBoot已经可以处理/env和/configprops端点中存在的敏感值,但只需要通过配置属性进行控制即可。但也有一种情况,用户可能希望根据属性源自哪个PropertySource来应用清理。例如,SpringCloudVault使用Vault来存储加密值并将它们加载到Spring环境中。由于所有值都是加密的,因此对整个属性源中的每个键的值进行脱敏处理是有意义的。可以通过添加类型为SanitizingFunction的@Bean来配置此类自定义清理规则。推荐一下我一直在连载的免费教程:SpringBoot教程可以直接点击!.与许多其他教程不同。本教程不仅考虑了1.x和2.x版本。同时,每次更新都会选择一些相关的内容进行修复Tips,让各个阶段的读者从长远来看都会有一定的收获。觉得不错记得转发支持哦!其他变化1.ReactiveSession个性化当前版本可以动态配置reactivesessionserver.reactive.session.timeout=302的有效期。Redislink自动配置连接池。当应用依赖包含commons-pool2.jar时,会自动配置redis连接池(JedisLettuce均支持)。如果要关闭它,请传递以下属性:spring.redis.jedis.pool.enabled=falsespring.redis.lettuce.pool.enabled=false3。构建信息个性化支持通过spring-boot-maven-pluginbuild-info.properties自动生成该构建信息org.springframework.bootspring-boot-maven-pluginversion4.Metrics新增两个应用启动指标:application.started.time:启动应用所需时间application.ready.time:启动应用对外提供服务两个所需时间磁盘空间指标:disk.free:磁盘空闲空间disk.total:磁盘总空间5.构建Docker镜像增强docker-maven-plugin插件功能:为自定义镜像设置标签网络配置参数,CloudNativeBuildpacks可用的构建过程支持使用buildCache和launchCache配置参数来自定义用于缓存buildpack提供的层到构建图像的名称6.删除了2.4版本中的过期属性由于2.4版本完成历史任务,所以删除了很多过时的属性。最近想升级的朋友一定要注意这部分,因为你原来的配置会失效!关于SpringMVC和servlet的一些属性:旧属性(已删除)新属性spring.web.localespring.mvc.localespring.web.locale-resolverspring.mvc.locale-resolverspring.web.resources.*spring.resources.*management.server.base-pathmanagement.server.servlet.context-path关于Elasticsearch属性的改变:因为内容很多,这里就不完整贴出来了。感兴趣的可以阅读文末参考资料中的官方信息。7、默认情况下,Bean的循环引用是完全禁止的。IDEA不推荐你使用@Autowired?有网友调侃这种鼓励大家使用构造函数的方法。那么在2.6.0以后,如果你还是觉得循环依赖无所谓,坚持使用下面的模式:那么,你会得到如下报错:┌──────┐|a(字段私有com.example.demo.Bcom.example.demo.A.b)↑↓|b(fieldprivatecom.example.demo.Acom.example.demo.B.a)└──────┘Action:不鼓励依赖循环引用,默认情况下禁止它们。更新您的应用程序以删除bean之间的依赖循环。作为最后的手段,可以通过将spring.main.allow-circular-references设置为true来自动打破循环。其实,Spring官方也是为了鼓励大家养成不产生循环依赖的好习惯。但是对于狮山项目来说,这样的需求对于开发者来说可能是非常痛苦的。因此,你也可以通过如下配置解除不允许循环依赖的需求:spring.main.allow-circular-references=true8。SpringMVC默认路径匹配策略SpringMVChandlermapping匹配请求路径的默认策略由AntPathMatcher改为PathPatternParser。执行器端点现在也使用基于PathPattern的URL匹配。需要注意的是Actuator端点的路径匹配策略不能通过配置属性进行配置。如果需要默认切换回AntPathMatcher,可以将spring.mvc.pathmatch.matching-strategy设置为ant-path-matcher,例如:spring.mvc.pathmatch.matching-strategy=ant-path-matcher好了,关于SpringBoot2.6的版本分析到此结束。最后推荐一下我一直在连载的免费教程:SpringBoot教程可以直接点开!与许多其他教程不同。本教程不仅考虑了1.x和2.x版本。同时,每次更新都会选择一些相关的内容进行修复Tips,让各个阶段的读者从长远来看都会有一定的收获。觉得不错记得转发支持哦!参考资料https://spring.io/blog/2021/1...https://github.com/spring-pro...https://www.oschina.net/news/...好了,就这些为了今天的学习!如果你在学习过程中遇到困难?可以加入我们超优质的Spring技术交流群,参与交流讨论,更好的学习进步!更多SpringBoot教程可直接点击!,欢迎收藏和转发支持!欢迎关注我的公众号:程序员DD,分享别处看不到的知识和思考