Spring Boot 3.4.0 发布:功能概览与示例

Spring Boot 3.4.0 带来了许多增强功能,使现代应用开发更加高效、便捷和强大。以下是最新功能的完整概述,以及一些帮助您快速入门的代码示例。


1. 应用程序版本管理

Spring Boot 引入了 spring.application.version 属性,方便开发者设置和访问应用程序版本。

示例

application.properties 中:

复制代码
spring.application.version=1.2.0

在代码中访问:

java 复制代码
@Value("${spring.application.version}")
private String appVersion;

@PostConstruct
public void printVersion() {
    System.out.println("App Version: " + appVersion);
}

2. 虚拟线程改进

Spring 现原生支持虚拟线程,可用于任务调度和异步处理,无需再添加 @EnableScheduling 注解。

示例

java 复制代码
@Component
public class VirtualThreadExample {

    @Scheduled(fixedRate = 2000)
    public void task() {
        System.out.println("Running on thread: " + Thread.currentThread());
    }
}

3. Docker Compose 支持增强

支持多个 Docker Compose 文件,适用于不同环境的配置合并。

示例

java 复制代码
spring.docker.compose.files=docker-compose.override.yml,docker-compose.prod.yml

4. Prometheus 1.x 客户端支持

通过支持 Prometheus 1.x 客户端,进一步提升了可观察性。

示例

添加依赖:

java 复制代码
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient</artifactId>
    <version>1.0.0</version>
</dependency>

5. 结构化日志改进

启用 JSON 或结构化日志记录时,Spring Boot 的启动横幅会自动禁用,以减少日志混乱。

示例
logback-spring.xml 配置:

java 复制代码
<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>{"timestamp":"%d","level":"%p","message":"%m"}</pattern>
        </encoder>
    </appender>
</configuration>

6. SBOM 执行器端点

新增 SBOM(软件物料清单)端点,支持软件供应链安全。

示例

启用 SBOM:

java 复制代码
management.endpoint.sbom.enabled=true

访问路径:/actuator/sbom


7. ApplicationContextRunner 增强

增强了 ApplicationContextRunner,支持自定义配置的运行和测试。

示例

java 复制代码
new ApplicationContextRunner()
    .withPropertyValues("spring.application.name=TestApp")
    .run(context -> assertThat(context).hasSingleBean(SomeBean.class));

8. Hibernate 自动配置增强

支持 Hibernate 的本机属性,提升了兼容性和配置灵活性。

示例

java 复制代码
spring:
  jpa:
    properties:
      hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect
      hibernate.show_sql: true

9. 新的执行器特性

  • 系统端点增强:新增 JVM 相关详情(如可用处理器、运行时间)。
  • 指标收集优化:提高了 HTTP 交换和请求正文指标的收集效率。

示例

java 复制代码
management.endpoint.system.enabled=true
management.metrics.enable.http=true

10. 条件注解改进

@ConditionalOnAvailableEndpoint 支持简化语法,允许通过值别名进行配置。

示例

java 复制代码
@Configuration
@ConditionalOnAvailableEndpoint(MyCustomEndpoint.class)
public class MyConfig {
    @Bean
    public MyService service() {
        return new MyService();
    }
}

11. 构建镜像支持扩展

提供了更多选项用于自定义 Spring Boot 容器镜像的构建过程。

示例

复制代码
bash 复制代码
./mvnw spring-boot:build-image -Dspring-boot.build-image.environment.BUILDPACK_ENV=<custom-value>

Spring Boot 3.4.0 的这些新功能将显著提升开发效率和项目质量。您可以从 官方文档 获取更多详细信息,立即尝试新版本吧!

相关推荐
掌心向暖RPA自动化12 小时前
如何获取网页某个元素在屏幕可见部分的中心坐标影刀RPA懒加载坐标定位技巧
java·javascript·自动化·rpa·影刀rpa
日取其半万世不竭13 小时前
Minecraft Java版社区服务器搭建教程(Linux,适合新手)
java·linux·服务器
TeamDev13 小时前
JxBrowser 9.0.0 版本发布啦!
java·前端·混合应用·jxbrowser·浏览器控件·跨平台渲染·原声输入
AI人工智能+电脑小能手14 小时前
【大白话说Java面试题】【Java基础篇】第24题:Java面向对象有哪些特征
java·开发语言·后端·面试
AI人工智能+电脑小能手14 小时前
【大白话说Java面试题】【Java基础篇】第25题:JDK1.8的新特性有哪些
java·开发语言·后端·面试
likerhood14 小时前
SLF4J: Failed to load class “StaticLoggerBinder“ 解决
java·log4j·maven
早日退休!!!15 小时前
大模型推理瓶颈七层分析模型
java·服务器·数据库
叶小鸡15 小时前
Java 篇-项目实战-天机学堂(从0到1)-day9
java·开发语言
@#¥&~是乱码鱼啦15 小时前
Spring分层架构:Controller、Service、Mapper数据链路,IOC的真实工作意义
java·spring·架构
xieliyu.15 小时前
Java手搓数据结构:从零模拟实现无头双向非循环链表
java·数据结构·链表