Spring Boot 2.2 正式发布,大幅性能提升 + Java 13 支持
之前 spring boot 2.2没能按时发布,是由于 spring framework 5.2 的发布受阻而推迟。这次随着 spring framework 5.2.0 成功发布之后,spring boot 2.2 也紧跟其后,发布了第一个版本:2.2.0。下面就来一起来看看这个版本都更新了些什么值得我们关注的内容。
组件版本更新
这些spring框架组件更新了依赖版本:
- spring amqp 2.2
- spring batch 4.2
- spring data moore
- spring framework 5.2
- spring hateoas 1.0
- spring integration 5.2
- spring kafka 2.3
- spring security 5.2
- spring session corn
框架中涉及的第三方包也更新了依赖版本:
- elasticsearch 6.7
- flyway 6.0
- jackson 2.10
- junit 5.5
- micrometer 1.3
- reactor dysprosium
- solr 8.0
大幅的性能提升
关于spring boot的性能问题是我们经常在内容平台上看到吐槽的关键词。这次在spring boot 2.2中,针对性能这一点,做了大幅的优化。应用程序的启动速度将变得更快,内存占用也会变得更少。
同时,为了加快应用的启动,还增加一个全局延迟初始化的配置参数spring.main.lazy-initialization
,这可以让我们的应用更快的完成启动动作,但是值得注意的是,延迟启动也会有下面这些副作用:
- 应用在进行延迟初始化的时候,http请求的处理会需要更长的时间
- 原本可能在启动期出现的错误,将延迟到启动的运行期间出现
java 13的支持
由于spring framework 5.2增加了对java 13的支持,所以spring boot 2.2也自然增加了这一特性。同时,spring boot 2.2对于老版本的java 11、java 8依然支持良好。所以,对于还在使用java 8的用户也可以安心的升级使用。
不可变的 @configurationproperties 绑定
配置属性现在支持基于构造函数的绑定,该绑定允许@configurationproperties
注解修饰的类是不可变的。可以通过使用@constructorbinding
注解修饰@configurationproperties
类或其构造函数之一来启用基于构造函数的绑定。可以在配置属性绑定提供的构造函数参数上使用@defaultvalue和@datetimeformat
之类的注释。
更多详细信息参阅文档:https://docs.spring.io/spring-boot/docs/2.2.0.release/reference/html/spring-boot-features.html#boot-features-external-config-constructor-binding
rsocket 支持
已为rsocket添加了自动化配置的starter实现:spring-boot-starter-rsocket
。当项目依赖了spring-security-rsocket
的时候,该starter还会自动配置spring security对rsocket的集成实现。
更多详细信息参阅文档:https://docs.spring.io/spring-boot/docs/2.2.0.release/reference/html//spring-boot-features.html#boot-features-rsocket
健康检查的分组支持
现在可以将spring boot actuator中各种各样的健康指标实现分组。如果将应用程序部署到kubernetes,一个典型的需求是您可能需要不同组的健康指标来进行“liveness”和“readiness”的探测。这个时候,我们就可以通过配置属性来定义不同的分组,比如:下面创建了一个仅具有datasource指示器的自定义组:
management.endpoint.health.group.custom.include=db
通过访问localhost8080/actuator/health/custom
,就可以访问自定义的组了。
更多详细信息参阅文档:https://docs.spring.io/spring-boot/docs/2.2.0.release/reference/html//production-ready-features.html#health-groups
其他更新
release notes中还记录了许多其他更改和改进。读者可以通过下方链接查看更多更新内容:
https://github.com/spring-projects/spring-boot/wiki/spring-boot-2.2-release-notes
参考资料
-
欢迎关注我的公众号:程序猿dd,获得独家整理的学习资源和日常干货推送。
如果您对我的专题内容感兴趣,也可以关注我的博客:
上一篇: Python真牛逼,获取压缩文件密码,我只要一分钟!
下一篇: CSS3弹性盒子