Spring Boot 2.5 重磅发布,黑暗模式太炸了!

简介: 距离上次的 Spring Boot 2.4.5 版本发布刚好一个月左右,Spring Boot 又发新版本了!

前言

距离上次的 Spring Boot 2.4.5 版本发布刚好一个月左右,Spring Boot 又发新版本了!


image.png


Spring Boot 又一次性发布了 3 个版本:


Spring Boot 2.5.0

Spring Boot 2.4.6

Spring Boot 2.2.13.RELEASE

在这次发布的 3 个版本中,Spring Boot 2.5 毫无疑问是最重大的一个版本,也是近半年发布的最大版本,上一个 Spring Boot 2.4 版本还是在半年之前。


本文重点介绍下 Spring Boot 2.5.0,另外两个版本都是优化版本,只是修复了一些bug,以及文档优化、依赖升级等,就没什么好介绍的了。


Maven 依赖先给大家奉上:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.0</version>
    <type>pom</type>
</dependency>

需要注意的是,2.4.x 版本开始是不带 .RELEASE 版本后缀的!


Spring Boot 2.5 又带来了许多新特性和改进,快来看看更新了啥吧!


Spring Boot 2.5 新特性一览

1、支持 Java 16

我只能说 Spring Boot 厉害了,Java 16 都开始支持了(同时兼容 Java 8),毕竟 Java 16 才发布两个多月。。


新版本任它发,我们都用 8,所以,虽然现在我们还远远用不上 Java 16,但 Spring Boot 能支持上就最好不过,这样对于那些想基于 Java 16 进行学习、开发的 Spring Boot 的同鞋就太好了(反正不是我)。


参考:JDK 16 正式发布,一次性发布 17 个新特性


2、支持 Gradle 7

Spring Boot Gradle 插件支持 Gradle 7.0.x,并已针对其进行了测试。


3、支持 Jetty 10

Spring Boot 2.5 现在支持 Jetty 10 内嵌了,因为 Jetty 10 需要依赖 Java 11,所以现在默认还是保持在 Jetty 9。


4、支持 HTTP/2 over TCP (h2c)

Spring Boot 2.5 所有内置的容器都可以支持 HTTP/2 over TCP (h2c),而无需进行任何手动定制。


5、新的数据源初始化机制

1)数据源调整


Spring Boot 2.5 中的某些数据源初始化的方法被重新设计了,下面的数据源参数配置也被废除了:


spring.datasource.*


新的数据源参数配置如下:


spring.sql.init.*


这个改动还挺大的,没事乱改啥参数,个人觉得之前的没毛病!


2)Flyway 和 Liquibase 调整


这两个是主流的数据库版本管理工具,使用 spring.flyway.url 和 spring.liquibase.url 定义的时候需要加上 username/ password 进行认证。


早期的版本中,这些参数都是从 spring.datasource 中派生的,用户在自定义数据源的时候会存在问题。


另外,如果使用了自定义数据源和 Liquibase 一起使用,现在会使用 SimpleDriverDataSource 数据源类进行配置,之前的版本使用的是池化数据源,会导致数据源初始化效率低下。


6、环境变量前缀

Spring Boot 2.5 可以为系统环境变量指定前缀了,这样可以方便我们在同一环境中运行多个不同的 Spring Boot 应用,而不用受重名环境变量冲突。


使用方法如下:

SpringApplication application = new SpringApplication(Javastack.class);
application.setEnvironmentPrefix("javastack");
application.run(args);

这样设置一下的话,所有 javastack-* 开头的系统环境变量才会被绑定。

比如:

javastack-id
javastack-name
javastack-age

7、增强 Docker 映像构建

Spring Boot Maven/ Gradle 插件现在都开始支持:


1)都支持自定义构建包;


2)都支持 Docker 构建包时传递卷数据(volume)绑定;


3)都支持打包可执行的 war 文件到 Docker 映像中;


8、Layered WARs

Spring Boot Maven 和 Gradle 插件现在可以创建分层的 WAR 了,分层 WAR 与 Spring Boot 2.3 版本中提供的分层 JAR 工作方式类似,为了可以更好的与 Docker 映像一起使用,提升构建速度。


这个我后续再更新一篇吧,想学习接收最新推送,请持续关注微信公众号:Java技术栈,公众号第一时间推送。


9、相关端点和指标变更

1)现在 /info actuator 端点不再默认开放了,如果使用了 Spring Security 的话,这个端点还需要身份认证才能访问,加强 info 端点的安全性;


2)新增了 /quartz 端点,这个端点提供了 Quartz 作业和触发器相关的的详细数据;


3)为 /startup 端点支持 get 请求,与 post 请求不同的是,get 请求的端点不会释放事件缓冲区,而且事件将继续保留在内存中;


4)为 /actuator/prometheus 端点提供标准 Prometheus 以及 OpenMetrics 响应;


5)为 Spring Data repositories 生成 Micrometer 指标;


6)自动生成 MongoDB 连接池、客户端命令相关指标;


10、官方文档界面和功能更新,还支持黑暗模式

Spring 项目首页黑暗模式:


image.png


Spring Boot 文档黑暗模式:


image.png


这个功能太炸了,有了黑暗模式,Java 程序员同鞋们再也不怕晚上熬夜学习 Spring Boot 了,如果你说你的电脑本来就支持,那当然没问题,但是原生支持可能兼容性更好。。


另外栈长顺便看了下 Spring / Spring Cloud 的文档,目前还不支持黑暗模式,估计后面所有项目文档都会支持上。


Spring Boot 2.5 依赖升级

升级了一系列依赖的 Spring 项目版本:


Spring Data 2021.0

Spring HATEOAS 1.3

Spring Integration 5.5

Spring Kafka 2.7

Spring Retry 1.3

Spring Security 5.5

Spring Session 2021.0

升级了一系列依赖的第三方依赖库:


Kotlin 1.5

Groovy 3.0

Flyway 7.7

Liquibase 4.2

Jackson 2.12

Kafka 2.7

Cassandra Driver 4.10

Embedded Mongo 3.0

Hibernate Validator 6.2

Jersey 2.33

Mockito 3.7

MongoDB 4.2

JUnit Jupiter 5.7

Elasticsearch 7.12

Spring Boot 2.5 功能废除

1)移除 Spring Data Solr 相碰的自动配置,由于 Spring Data 2021.0.0 已经将其移除了;


2)移除了 org.springframework.boot.actuate.endpoint.http 包下的 ActuatorMediaType 和 ApiVersion 类;


3)jOOQ’s *Provider 的相关回调接口实现和设置已经被弃用,现在应该改用 DefaultConfigurationCustomizer 配置类;


4)org.springframework.boot.autoconfigure.data.jpa 包下的 EntityManagerFactoryDependsOnPostProcessor 类被移到了 org.springframework.boot.autoconfigure.orm.jpa 包下;


总结

终于写完了,又肝了一个周末!!


可以看出 Spring Boot 2.5 的变更还是蛮大的,特别是新的数据源机制、相关端点的变更,还有许多框架的重大版本升级。


切记不要轻易升级到这个版本,如需升级,最好是详细看清楚变更内容,做好充分测试,以免年终奖没了。。


后续栈长有时间再深入研究下更多的细节,给大家带来更详细的技术文章,关注公众号Java技术栈第一时间推送。


最后,大家觉得本文有用的话,动动小手,给栈长来个小小的在看、转发呗,原创不易,需要你的鼓励哦~


更多请参考官方文档:


https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes


相关文章
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
12698 60
|
3月前
|
监控 Cloud Native Java
Spring Integration 企业集成模式技术详解与实践指南
本文档全面介绍 Spring Integration 框架的核心概念、架构设计和实际应用。作为 Spring 生态系统中的企业集成解决方案,Spring Integration 基于著名的 Enterprise Integration Patterns(EIP)提供了轻量级的消息驱动架构。本文将深入探讨其消息通道、端点、过滤器、转换器等核心组件,以及如何构建可靠的企业集成解决方案。
364 0
|
11月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2734 17
Spring Boot 两种部署到服务器的方式
|
9月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
386 0
|
设计模式 监控 Java
解析Spring Cloud中的断路器模式原理
解析Spring Cloud中的断路器模式原理
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
575 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
786 2
|
Java 调度 开发者
spring的@Scheduled()有几种定时模式?
【10月更文挑战第12天】spring的@Scheduled()有几种定时模式?
508 1
|
设计模式 Java Spring
spring源码设计模式分析(五)-策略模式
spring源码设计模式分析(五)-策略模式

热门文章

最新文章