前言
目前 Spring Boot 2.5.0 RC1 已经发布,其开发团队表示将在 5 月 20 日正式 GA。我们梳理了一下大家比较关系和感兴趣的一些变更。
一、 运行端点变更
Secure info endpoint(安全的 info 端点)
默认情况下/info端点不再对 web 公开。此外,如果引用了 Spring Security,则默认情况下端点需要经过身份验证才能访问。
优雅关机支持 GET 请求
我们流量请求到此接口执行业务逻辑的时候,若服务端此时执行关机 (kill),Spring boot 默认情况会直接关闭容器(tomcat 等),导致此业务逻辑执行失败。在一些业务场景下:会出现数据不一致的情况,事务逻辑不会回滚。在 spring boot 2.3 版本,支持优雅停机功能。
记录停机日志
通过以下属性我们可以在 JVM 退出时候,记录资源释放日志等。
logging.register-shutdown-hook
新增 Quartz 的 Actuator Endpoint
Actuator 中新增了一个 /quartz端点。它提供了有关Quartz作业和触发器的详细信息。
访问 /actuator/quartz
$ curl 'http://localhost:8080/actuator/quartz' -i -X GET
返回应用配置的任务信息
{
"jobs" : {
"groups" : [ "samples", "tests" ]
},
"triggers" : {
"groups" : [ "samples", "DEFAULT" ]
}
}
二、增强容器化功能
1、War 包支持分层
Spring Boot 的Maven和Gradle插件现在都允许您创建用于 Docker 的分层WARs。分层WARs的工作方式与 springboot 早期版本中提供的分层JAR支持类似。查看 Gradle 和 Maven 参考文档了解更多详细信息。
具体使用可以参考笔者的这篇文章「Spring Boot 2.3 新特性」分层 JAR
2、Buildpack 支持配置自定义
Spring Boot 2.4[2]基于 Buildpack 推出了自己的 docker 构建工具 整合在原有的spring-boot-maven-plugin中,只需要配置对应目标仓库和主机信息即可完成镜像构建。具体使用可以参考笔者的这篇文章「Spring Boot 2.4 新特性」一键构建 Docker 镜像。
spring boot 2.5 提供了更多的自定义能力,距离完全抛弃 Dockerfile 的日子更近了。
mvn spring-boot:build-image
三、Environment 前缀
spring boot 可以为系统环境变量指定前缀,以便可以在同一环境中运行多个不同的 Spring 引导应用程序。使用SpringApplication.setEnvironmentPrefix(…)设置绑定属性时要使用的前缀。
例如,下面将添加myapp前缀:
//java www.fhadmin.org
SpringApplication application = new SpringApplication(MyApp.class);
application.setEnvironmentPrefix("myapp");
application.run(args);
现在,所有属性都需要一个前缀版本。例如,要更改服务器端口
server.port=8080 --> myapp.server.port=8080
四、Metrics 增强
Metrics for Spring Data Repositories
@Timed Metrics with WebFlux
MongoDB Metrics
号外:mica 2.4.5 发布在即,全网唯一支持 druid 和 undertow 的 Metrics 指标。
五、HTTP/2 over TCP (h2c)
现在,Spring boot 支持四个嵌入式 Web 容器都已经支持基于 TCP(h2c)的 HTTP / 2 协议,无需进行任何手动自定义。如果要开启 h2c,只需将 server.http2.enabled 设置为 true,并将 server.ssl.enabled 设置为 false(默认 false)。
当然,微服务全栈 h2c 还需要打通 feign 和 RestTemplate 这种 http 客户端,h2c 我们 19 年就开始实践,详见:spring-cloud-java11
目前 Spring cloud gateway 的 client 也已经支持了 h2c 详见:
reactor-netty/issues/639
spring-cloud-gateway/issues/7
六、数据源相关增强
多数据源监控状态检测支持
AbstractRoutingDataSource主要作用于 Spring 多数据源,health端点现在显示目标数据源的运行状况。每个目标数据源都使用其路由 key 命名。与前面一样,要忽略运行状况端点中的路由数据源
management.health.db.ignore-routing-data-sources=true
数据源初始化脚本属性变更
低版本的 spring.datasource.init 现在统一变更为 spring.sql.init 。
spring.datasource.init --> spring.sql.init
当然此属性也可以适用 R2DBC 数据初始化。
数据初始化重构
为了支持schema.sql以及data.sql初始化,SpringBoot2.5 中进行了重新设计。
如果在同一个应用程序中同时使用 JPA 和 springboot 的 SQL 脚本初始化,您可能会发现 Springboot2.5 存在一个排序问题。默认情况下,我们先运行schema.sql以及data.sql然后再进行 JPA 初始化。如果希望在 JPA 初始化之后再运行脚本,你可以添加下面的配置。
spring.datasource.initialization-order=after-jpa
相关推荐
阿里云k8s 部署vue2+nginx+springboot2.5+nacos2.0.3
阿里云k8s kubectl 一键部署springboot2.5
该项目是一款开源博客框架,采用Springboot2.5和Vue2技术栈,实现前后端分离。源码包含563个文件,其中Java文件482个,XML文件54个,YAML文件5个,文本文件4个,JSON文件4个,SQL文件2个,FTL文件2个,密钥文件2个,...
【Spring2.5的新特性】 Spring框架自诞生以来,一直致力于简化企业级应用的开发,提供强大且非侵入式的解决方案。Spring2.5在这个方向上迈出了一大步,尤其对于使用Java 5或更高版本的开发者来说,它带来了更多便利...
标题中的“spring2.5的一个新特性”指的Spring框架的第2.5版本中引入的重要更新。Spring是一个广泛使用的Java企业级应用开发框架,它提供了丰富的功能来简化应用程序的构建,包括依赖注入、面向切面编程(AOP)、...
Spring2.5的新特性-第一部分.doc 本文将主要关注于简化的配置和在Spring应用程序上下文(application context)核心新增的基于注解的功能; Spring_2.5新特性-第二部分-Spring_MVC中的新特性.doc
在IT行业中,SpringBoot框架因其简洁的配置和强大的功能而被广泛应用,特别是在构建微服务系统时。本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个...
Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度策略。在SpringBoot中集成Quartz,可以充分利用Spring的依赖注入和管理特性,使得任务调度更加便捷和高效。 首先,我们需要在SpringBoot项目中...
标题中的“基于SpringBoot的自动更新”指的是在SpringBoot应用中实现自动化更新的功能,使得应用程序能够在运行时自动检测并下载最新的版本,无需手动重启服务。这通常涉及到版本控制、网络请求、文件处理等多个技术...
整合SpringBoot、DWR、FreeMarker和JSP,可以构建出具有强大交互性的Web应用。DWR使得前后端通信变得简单,而FreeMarker和JSP则提供了灵活的视图渲染能力。通过以上步骤,你可以创建一个允许JavaScript直接调用Java...
最后,压缩包中的"SpringBoot+Atomikos分布式事务及动态数据源"文件可能包含了具体的代码示例和配置文件,这些资源可以帮助开发者更好地理解和实践上述概念。通过分析和学习这些示例,可以快速上手Spring Boot与...
Springboot2.5, mybatis-plus, swagger Jwt minio 文件服务器 spring 拦截器使用 #### 开发需求 1. ##### 技术 数据库:mysql8.0 项目框架: 后端 java: 使用 springboot 后台...
在SpringBoot的文档中,你会找到关于如何创建一个新的SpringBoot项目的信息,包括使用Spring Initializr生成项目结构,以及在Maven或Gradle构建系统中配置依赖。文档还会详细介绍如何编写主应用类,通常只需要一个`@...
在本项目中,“vue+springboot实现登录功能.rar”是一个包含前后端分离的登录功能实现。这个项目旨在帮助初学者理解和实践现代Web开发中的关键技术和架构。以下是该项目涉及的主要知识点: 1. **Vue.js**:Vue.js ...
这个"SpringBoot集成各种功能合集"很可能是一个包含上述各种功能的示例项目,通过`springboot-inter-function-master`这个文件夹,开发者可以学习如何在SpringBoot项目中实际应用这些功能,加深对SpringBoot的理解和...
赠送jar包:spring-boot-2.5.5.jar; 赠送原API文档:spring-boot-2.5.5-javadoc.jar; 赠送源代码:spring-boot-2.5.5-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统...内附配置环境里面有说明。
最新springboot 尚硅谷 视频 最新springboot 尚硅谷 视频 最新springboot 尚硅谷 视频 最新springboot 尚硅谷 视频 最新springboot 尚硅谷 视频
使用的框架为springboot,新建一个demo页面,设置一个按钮和一个文本域,按钮用来向接口请求信息,文本域用来存放定位信息;使用百度地图的API实现定位功能,将返回的json数据封装成接口;点击按钮向接口请求数据,将...