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 属性。
相关推荐
激流丶7 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue11 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
让学习成为一种生活方式28 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
晨曦_子画33 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
假装我不帅1 小时前
asp.net framework从webform开始创建mvc项目
后端·asp.net·mvc
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
神仙别闹1 小时前
基于ASP.NET+SQL Server实现简单小说网站(包括PC版本和移动版本)
后端·asp.net
Heavydrink1 小时前
HTTP动词与状态码
java
ktkiko111 小时前
Java中的远程方法调用——RPC详解
java·开发语言·rpc
计算机-秋大田2 小时前
基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解
java·论文阅读·spring boot·后端·vue