之前 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
参考资料
Spring Boot 2.2.0
来源: https://www.cnblogs.com/didispace/p/11697042.html