Spring Boot 3.2 更新整理,值得收藏

1. 从 Spring Boot 3.1 升级
  • 参数名称发现 : 需要在编译时使用 -parameters 选项以避免依赖注入或属性绑定问题。
  • 记录的应用程序名称 : 设置 spring.application.name 会在日志中包含应用名称,可通过 logging.include-application-name 配置。
  • 自动配置的用户详细信息服务 : 需要定义相关bean或使用 spring.security.user.namespring.security.user.password 配置。
  • OTLP 跟踪端点 : 需要设置 management.otlp.tracing.endpoint 以自动配置 OtlpHttpSpanExporter bean。
  • 嵌套 Jar 支持 : 重写支持代码,使用新的 URL 格式和 java.lang.ref.Cleaner 管理资源。
  • Spring Boot 3.0 中的弃用情况: 已删除弃用的类、方法和属性,升级前需检查未使用弃用方法。
  • 日志关联 ID: 使用 Micrometer 跟踪时自动记录,自定义日志配置可删除。
2. 新特性和改进
  • RestClient 支持: 引入新的函数式阻塞 HTTP API,可能作为 RestTemplate 的替代。
  • RestTemplate HTTP 客户端: 自动配置使用 JettyClient 或 JdkClient。
  • 对 JdbcClient 的支持 : 基于 NamedParameterJdbcTemplate 自动配置。
  • 对虚拟线程的支持 : 需要 Java 21 和设置 spring.threads.virtual.enabled=true
    • Servlet Web 服务器使用虚拟线程处理请求。
    • Spring WebFlux 配置使用 applicationTaskExecutor.
    • 提供 SimpleAsyncTaskExecutorBuilderSimpleAsyncTaskSchedulerBuilder.
    • JVM 保持活动状态通过 spring.main.keep-alive 控制。
  • JVM 检查点/恢复支持: 初始支持 Project CRaC。
  • SSL 捆绑包重新加载 : 信任材料变化时自动重新加载,需要设置 reload-on-update 属性。
  • 可观测性改进 :
    • 使用 Micrometer 注解。
    • ObservationHandler 自动注册。
    • B3 跟踪传播格式变更。
    • @Scheduled 方法和 R2DBC 支持可观测性。
3. Docker 镜像构建
  • 默认 CNB 构建器升级: 基于 Ubuntu 22.04。
  • Docker 主机配置: 使用 Docker CLI 配置文件。
  • 缓存的绑定挂载: 配置构建和启动缓存。
  • 构建工作区配置: 使用绑定挂载或自定义命名卷。
  • 安全选项配置: 自定义 CNB 构建器容器安全选项。
4. 特定技术集成
  • Spring for GraphQL : 自动配置使用 applicationTaskExecutor.
  • OAuth2 令牌验证器 : 使用 OAuth2TokenValidator<Jwt> 进行令牌验证。
  • ActiveMQ 服务连接支持: 集成 Testcontainers 和 Docker Compose。
  • Neo4j Docker Compose 支持 : 配置 NEO4J_AUTH 环境变量。
  • WebSocketServerSpec 配置: 自定义 WebSocket 服务器规范。
  • Neo4j AuthTokenManager: 用于身份验证的 bean。
5. 消息系统更新
  • RabbitMQ: SSL 捆绑包支持,限制消息正文大小,虚拟主机支持。
  • Kafka: SSL 捆绑包支持。
  • JMS 会话: 新属性配置会话。
6. 数据库连接和配置
  • Oracle UCP 数据源: 连接验证默认值删除。
  • Gradle 配置 : 新增 testAndDevelopmentOnly 配置。
7. 其他改进
  • Jackson 功能配置: 启用或禁用 EnumFeature 和 JsonNodeFeature。
  • Provider 设置延迟值: 为其他构建信息属性设置。
  • 事务管理器自定义 : 适用于任何类型的 TransactionManager.
  • 端口信息记录: 改进和统一。
  • Multipart 请求处理: 新属性控制多部分处理。
  • RestClientBuilderConfigurer: 应用 Spring Boot 默认设置。
  • Jetty 服务器配置: 最大连接数配置。
  • PemSslStoreBundle 创建: 提供密钥库密码。
  • OpenTelemetry service.name : 使用 spring.application.name.
  • OTLP 指标和跟踪连接详细信息: 支持连接详细信息。
  • Wavefront CSP 身份验证: 添加支持。
  • Flyway 事务锁定配置: PostgreSQL 事务锁定使用。
  • Kafka MessageListenerContainer : 支持 changeConsumerThreadName 属性。
8. 弃用的功能
  • OkHttp 3 支持: 弃用,推荐使用 OkHttp 4。
  • Maven 目标属性 : directories 属性弃用。
  • LoggingSystemProperties 常量: 使用枚举值替代。
  • 请求缓冲支持 : 在 ClientHttpRequestFactorySettings 中弃用。
  • 注册 ApplicationContextInitializer 和 ApplicationListener: 不推荐使用环境属性注册。
  • Flyway 属性移动: 到专用命名空间。
  • InfluxDB 支持: 弃用,推荐新的客户端和集成。
  • OpenTelemetry 配置属性 : 弃用 management.otlp.metrics.export.resource-attributes.
  • TaskExecutorBuilder 和 TaskSchedulerBuilder: 推荐使用 ThreadPool 版本。
9. 测试和工具
  • Awaitility : 成为 spring-boot-starter-test 的一部分。
  • JdbcTest 和 DataJpaTest : 自动配置的 JdbcClient bean 可用。
  • MockMvc 自动配置: 使用注册 bean 的分派器类型和初始化参数。
  • Testcontainers 并行初始化 : 设置 spring.testcontainers.beans.startupparallel.
  • Micrometer 观察 : 支持 spring.kafka.template.observation-enabled 属性。
相关推荐
蜡台几秒前
Vue + SpringBoot 实现 WebSocket 基于 Sec-WebSocket-Protocol 传参鉴权(避坑指南)
vue.js·spring boot·websocket·sec
Yeh20205814 分钟前
Mybatis笔记一
java·笔记·mybatis
likerhood14 分钟前
Java 动态代理深度解析:从“为什么“到“底层原理“
java
_阿伟_17 分钟前
信息检索简单介绍
java
下次再写20 分钟前
深入浅出微服务架构:从理论到Spring Boot实战
java·微服务·springboot·springcloud·架构设计·后端开发·分布式系统
北冥有羽Victoria24 分钟前
Django中间件实战:FBV/CBV日志全兼容
数据库·vscode·后端·python·django·sqlite·开源
Kiyra30 分钟前
异步任务不用 Kafka 也行:用 Redis Stream 搭一套轻量级 Producer/Consumer 框架
数据库·人工智能·redis·分布式·后端·缓存·kafka
进阶的猿猴31 分钟前
Rsa简单实现接口到期限制(springBoot)
java·spring boot·后端
Java编程爱好者34 分钟前
MySQL / PostgreSQL DDL 审核自动化:从人工 review 到 CI 拦截
后端
雨落在了我的手上40 分钟前
初识java(二):数据类型与变量
java·开发语言