1. 从 Spring Boot 3.1 升级
- 参数名称发现 : 需要在编译时使用
-parameters
选项以避免依赖注入或属性绑定问题。 - 记录的应用程序名称 : 设置
spring.application.name
会在日志中包含应用名称,可通过logging.include-application-name
配置。 - 自动配置的用户详细信息服务 : 需要定义相关bean或使用
spring.security.user.name
和spring.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
. - 提供
SimpleAsyncTaskExecutorBuilder
和SimpleAsyncTaskSchedulerBuilder
. - 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.startup
为parallel
. - Micrometer 观察 : 支持
spring.kafka.template.observation-enabled
属性。