当前位置: 首页 > news >正文

SpringBoot 新特性

优质博文:IT-BLOG-CN

2.1.0新特性最低支持jdk8,支持tomcat9

对响应式编程的支持,spring-boot-starter-webflux starter POM可以快速开始使用Spring WebFlux,它由嵌入式Netty服务器支持

1.5.8
在这里插入图片描述
2.1.0/2.7.0/3.0.0
在这里插入图片描述
Configuration properties migration

当升级到新功能版本时,一些配置可能会重命名或者被移除。SpringBoot提供一种方式去分析你应用的环境和在启动时打印诊断内容,还可以在运行时为你临时迁移属性。要启用该特性,添加下方的依赖到你的工程中:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-properties-migrator</artifactId> <scope>runtime</scope>
</dependency>

Gradle Plugin 增强,支持kotlin。

Spring Boot 2.0 开始支持 GIF banners. See this project for an example.
在这里插入图片描述
2.7.0新特性自动配置注册文件,文件位置发生变更,之前都是写在下面 文件中的:META-INF/spring.factories>现在改名了:META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

为了向后兼容,META-INF/spring.factories 虽然现在被标识废弃了,但现在仍然可以使用,后续可能被彻底删除,建议使用新的规范。
在这里插入图片描述
支持 GraphQL,集成了对 GraphQL 的自动配置、指标支持等,Starter 名为:spring-boot-starter-graphql

由于 OkHttp 3 不再维护,Spring Boot 2.7 已升级到 OkHTTP 4。OkHttp 4向后兼容OkHttp 3

新注解(@AutoConfiguration) 新增了一个自动配置注解 @AutoConfiguration,用来代替之前的 @Configuration,用于标识新自动配置注册文件中的顶级自动配置类,由 @AutoConfiguration 注解嵌套、导入进来的其他配置类可以继续使用 @Configuration 注解。

另外,为方便起见,@AutoConfiguration 注解还支持 after, afterNames, before 和 beforeNames 属性进行自动配置排序,用于代替之前的 @AutoConfigureAfter 和 @AutoConfigureBefore 注解。

这个注解可以说更加细分了吧,自动配置专用注解,用专门的注解来干专门的事,这样也可以用来区分用 @Configuration 标识的普通配置类。

2.6.0开始禁止循环引用: 如果您的应用程序由于 BeanCurrentlyInCreationException 而无法启动,强烈建议您更新配置以打破依赖循环。

如果您无法这样做,可以通过将 spring.main.allow-circular-references 设置为 true 或在 SpringApplication 和 SpringApplicationBuilder 上使用新的 setter 方法来再次允许循环引用

3.0.0新特性

spring6

Java 17是Spring Boot 3.0的最低版本要求,spring6 tomcat10也是springboot3的最低版本要求

Spring Boot 3.0的一个重要变化,即从Java EE迁移至javarta.包名由javax变成javarta。

oracle在19年把javax捐给eclipse基金会,但不允许使用javax的命名空间,所以eclipse才继续发展成现在的javaee标准Jakarta EE。

Spring Boot 3.0 应用程序现在可以直接转换为 GraalVM 原生镜像(无需本地安装GraalVM环境),这可以提供显著的内存和启动性能改进。

可参考文章:Spring Native

GraalVM与Spring Native初体验

native-image

mvn -Pnative spring-boot:build-image

docker run --rm -p 8080:8080 docker.io/library/myproject:0.0.1-SNAPSHOT

spring-native打包镜像启动速度
在这里插入图片描述
JVM启动速度
在这里插入图片描述

文件大小:spring-native打包镜像占95.55MB,JVM占28.9MB。

Auto-configuration Files

Spring Boot 2.7 引入了一个新的 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,用于注册自动配置,同时保持与 spring.factories 中注册的向后兼容性。在此版本中,已删除对在 spring.factories 中注册自动配置的支持,以支持导入文件。

Spring官方在(Spring Boot3.0,Spring Framework6.0、Tomcat10.1.6-M16以上兼容支持JDK19) 实验虚拟线程
在这里插入图片描述
3.1新特性

1、最低环境要求
Spring Boot 3.0 的发布,其最低要求 Java 17,并向上兼容支持 Java 19,Spring Boot 3.1 可以支持 Java 20 了,因为前段时间 Java 20 发布了。

对 Java 开发环境的要求对比表:

Spring BootJDKSpringMavenGradle
3.1.017 ~ 206.0.9+3.6.3+7.5+,8.x
3.0.017~196.0.2+3.5+7.5+
2.7.128~205.3.27+3.5+6.8.x,6.9.x,7.x,8.x

2、移除 HttpClient 4

因为 Spring 6 删除了 RestTemplate 对 Apache HttpClient 4 的支持,取而代之的则是 Apache HttpClient 5。

而 Spring Boot 3.0 又同时包含了 HttpClient 4 和 HttpClient 5 两个依赖的管理,如果同时管理这两个版本,有的人可能会继续使用 HttpClient 4,应用程序在使用 RestTemplate 时可能会有潜在的错误,导致诊断困难。

所以,Spring Boot 3.1 移除了 HttpClient 4 的依赖管理,转而逼迫用户强制使用 HttpClient 5,大家有依赖 HttpClient 4 的升级时需要注意了。

3、Servlet 和 Filter 注册失败时抛异常

大家知道,Spring Boot 注册 Servlet 和 Filter 时用的 ServletRegistrationBean 和 FilterRegistrationBean 这两个类,之前注册失败时是记录 warn 级别的日志,现在则是直接抛出 IllegalStateException 异常。

如果不想注册失败抛出异常,还是想像以前一样记录 warn 警告日志,可以调用这两个类的 setIgnoreRegistrationFailure(true) 方法.

http://www.lryc.cn/news/505791.html

相关文章:

  • 鸿蒙app封装 axios post请求失败问题
  • 消息队列 Kafka 架构组件及其特性
  • 网络攻击与防范
  • 文献研读|基于像素语义层面图像重建的AI生成图像检测
  • 【操作系统】为什么需要架构裁剪?
  • LSTM长短期记忆网络
  • 基于前端技术UniApp和后端技术Node.js的电影购票系统
  • 数据结构与算法:稀疏数组
  • Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
  • VSCode中的Black Formatter没有生效的解决办法
  • 【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
  • Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
  • 微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
  • sql中case when若条件重复 执行的顺序
  • 压力测试Jmeter简介
  • cesium 与 threejs 对比
  • 探索QScreen的信号与槽:动态响应屏幕变化
  • vLLM项目加入PyTorch生态系统,引领LLM推理新纪元
  • 索引-介绍结构语法
  • SpringBoot整合JDBC
  • XXE靶场
  • Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索
  • Facebook的隐私保护政策:用户数据如何在平台上被管理?
  • 【ETCD】【源码阅读】深入解析 EtcdServer.applySnapshot方法
  • ‌HBase是什么,‌HBase介绍
  • 【Rust自学】3.3. 数据类型:复合类型
  • 【C++】小乐乐求和问题的高效求解与算法对比分析
  • configure错误:“C compiler cannot create executables“
  • PAT乙级 锤子剪刀布 巩固巩固map的使用
  • Webpack学习笔记(1)