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

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


1. 应用程序版本管理

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

示例
application.properties 中:

spring.application.version=1.2.0

在代码中访问:

@Value("${spring.application.version}")
private String appVersion;@PostConstruct
public void printVersion() {System.out.println("App Version: " + appVersion);
}

2. 虚拟线程改进

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

示例

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

3. Docker Compose 支持增强

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

示例

spring.docker.compose.files=docker-compose.override.yml,docker-compose.prod.yml

4. Prometheus 1.x 客户端支持

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

示例
添加依赖:

<dependency><groupId>io.prometheus</groupId><artifactId>simpleclient</artifactId><version>1.0.0</version>
</dependency>

5. 结构化日志改进

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

示例
logback-spring.xml 配置:

<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:

management.endpoint.sbom.enabled=true

访问路径:/actuator/sbom


7. ApplicationContextRunner 增强

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

示例

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

8. Hibernate 自动配置增强

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

示例

spring:jpa:properties:hibernate.dialect: org.hibernate.dialect.PostgreSQLDialecthibernate.show_sql: true

9. 新的执行器特性

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

示例

management.endpoint.system.enabled=true
management.metrics.enable.http=true

10. 条件注解改进

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

示例

@Configuration
@ConditionalOnAvailableEndpoint(MyCustomEndpoint.class)
public class MyConfig {@Beanpublic MyService service() {return new MyService();}
}

11. 构建镜像支持扩展

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

示例

 
./mvnw spring-boot:build-image -Dspring-boot.build-image.environment.BUILDPACK_ENV=<custom-value>

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hhdb数据库介绍(10-43)

安全 密码安全管理 密码安全管理为用户提供了对计算节点数据库用户与存储节点的连接用户、备份用户的密码有效期监控提醒。到期后自动提示用户修改密码以提升系统的安全性。 数据库用户密码 &#xff08;一&#xff09;密码修改 用户可以在“安全->密码安全管理->数据…

基于DFA算法实现敏感词过滤

1、什么是DFA&#xff1f; DFA&#xff08;Deterministic Finite Automaton&#xff09;&#xff0c;即确定有穷自动机。其特征为&#xff1a;有一个有限状 态集合和一些从一个状态通向另一个状态的边&#xff0c;每条边上标记有一个符号&#xff0c;其中一个状态是 初态&#…

隐私安全大考,Facebook 如何应对?

随着数字时代的到来和全球互联网用户的快速增长&#xff0c;隐私安全问题已上升为网络世界的重要议题。社交媒体巨头Facebook因其庞大的用户群体和大量的数据处理活动&#xff0c;成为隐私问题的聚焦点。面对隐私安全的大考&#xff0c;Facebook采取了一系列策略来应对这些挑战…

基于深度学习的甲状腺结节影像自动化诊断系统(PyQt5界面+数据集+训练代码)

随着医学影像技术的发展&#xff0c;计算机辅助诊断在甲状腺结节的早期筛查中发挥着重要作用。甲状腺结节的良恶性鉴别对临床治疗具有重要意义&#xff0c;但传统的诊断方法依赖于医生的经验和影像学特征&#xff0c;存在一定的主观性和局限性。为了解决这一问题&#xff0c;本…

更换 Git 项目的远程仓库地址(五种方法)

更换 Git 项目的远程仓库地址有几种不同的方法&#xff0c;下面是详细的步骤和一些额外的方法来完成这个任务。 方法1&#xff1a;使用 git remote set-url 这是最直接的方法。假设你想要更改名为 origin 的远程仓库地址到新的 URL。 查看当前的远程仓库配置&#xff1a; git…

秒懂:使用js验证hash, content hash , chunk hash的区别

一、使用js验证hash, content hash , chunk hash的区别 1、计算一般的 Hash&#xff08;以简单字符串为例&#xff09; 使用crypto-js库来进行哈希计算&#xff0c;需提前引入npm install crypto-js库。 crypto-js&#xff1a; 是一个JavaScript加密算法库&#xff0c;用于实…

深入浅出:PHP中的字符串处理函数全解析

文章目录 引言理解字符串创建字符串使用单引号使用双引号 访问和修改字符串访问字符修改字符 字符串连接 常用字符串处理函数获取字符串长度查找子字符串查找首次出现的位置查找最后一次出现的位置 替换子字符串简单替换多次替换 分割字符串按分隔符分割 合并字符串转换大小写全…

Telnet不安全?如何配置使用更安全的STelnet远程登录华为AR1000V路由器?

在上一篇文章中&#xff0c;我们介绍了如何配置一台全新的AR1000V&#xff0c;来实现通过Telnet远程登录设备&#xff08;如何配置使用Telnet远程登录华为AR1000V路由器&#xff1f;&#xff09;。其实&#xff0c;在之前的文章中&#xff0c;我们已经介绍过Telnet是一种不安全…

kafka 和 rocketmq 的区别

Kafka 和 RocketMQ 是两种高性能的分布式消息队列系统&#xff0c;广泛用于实时数据处理、事件流处理和分布式系统的解耦。以下是两者的主要区别&#xff1a; 起源和生态 Kafka 起源于 LinkedIn&#xff0c;后贡献给 Apache 社区。拥有强大的开源生态和广泛的社区支持。广泛应…

CV(2)-插值和卷积

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 看看年前可以学到哪。 频率&#xff1a; 灰度值变化程度的指标&#xff0c;是灰度再平面上的梯度幅值: 幅值&#xff1a; 是在一个周期内&#xff0c;交流电瞬时出现的最大绝对值&#xff0c;也是一个正弦波&#xff0c;波…

python数据分析之爬虫基础:解析

目录 1、xpath 1.1、xpath的安装以及lxml的安装 1.2、xpath的基本使用 1.3、xpath基本语法 2、JsonPath 2.1、jsonpath的安装 2.2、jsonpath的使用 2.3、jsonpath的基础语法 3、BeautifulSoup 3.1、bs4安装及创建 3.2、beautifulsoup的使用 3.3、beautifulsoup基本语…

QNX的系统资源访问机制

资料参考: QNX官网文档 在QNX中,一些系统的资源默认是无法访问的,或者可访问的范围过大,导致产生不可控的危险,此时便需要对系统资源进行访问限制 接口如下 #include <sys/rsrcdbmgr.h> #include <sys/rsrcdbmsg.h>int rsrcdbmgr_create(

1000 道最新高频 Java 面试题

金九银十已过&#xff0c;之前面试的也差不多了&#xff0c;小编在这里给大家整理了一套阿里面试官最喜欢问的问题或者出场率较高的面试题&#xff0c;助校招或者社招路上的你一臂之力&#xff01; 首先我们需要明白一个事实&#xff0c;招聘的一个很关键的因素是在给自己找未…

记录vite关于tailwindcss4.0-bate4出现margin[m-*]、padding[p-*]无法生效的问题。

环境如下&#xff1a; vite:5.4.10 tailwindcss: 4.0.0-beta.4 tailwindcss/vite: 4.0.0-beta.4 4.0默认的样式优先级比较低 如果使用了一些reset的css文件 那么很多样式会失效 例如&#xff1a;reset.css中 html, body, ul, li, h1, h2, h3, h4, h5, h6, dl, dt, dd, ol, i…

亚马逊云(AWS)使用root用户登录

最近在AWS新开了服务器&#xff08;EC2&#xff09;&#xff0c;用于学习&#xff0c;遇到一个问题就是默认是用ec2-user用户登录&#xff0c;也需要密钥对。 既然是学习用的服务器&#xff0c;还是想直接用root登录&#xff0c;下面开始修改&#xff1a; 操作系统是&#xff1…

《向量数据库指南》——OPPO分布式向量检索的实战与突破

OPPO对向量检索的探索:从单机到分布式的华丽转身 在当今这个数据爆炸的时代,如何高效地存储、检索和分析数据,成为了企业面临的一大挑战。特别是在人工智能领域,向量数据的处理更是占据了举足轻重的地位。OPPO,作为全球知名的智能手机制造商,自然也不会放过这个技术风口…

Matlab 绘制雷达图像完全案例和官方教程(亲测)

首先上官方教程链接 polarplothttps://ww2.mathworks.cn/help/matlab/ref/polarplot.html 上实例 % 定义角度向量和径向向量 theta linspace(0, 2*pi, 5); r1 [1, 2, 1.5, 2.5, 1]; r2 [2, 1, 2.5, 1.5, 2];% 绘制两个雷达图 polarplot(theta, r1, r-, LineWidth, 2); hold …

bash命令缓存导致命令执行失败的问题

1、问题背景 为了修复老版本 vsftpd 的安全漏洞&#xff0c;需要把生产环境上 vsftpd 版本升级到 vsftpd-3.0.5&#xff0c;因为直接使用 rpm 包的方式进行升级还涉及到下层依赖包的升级(生产环境上的依赖包版本不能随意变更&#xff0c;可能会影响其他上层应用)&#xff0c;所…

【Point-LIO】基于Ubuntu20.04的ROS1平台的Point-LIO部署Mid-360激光雷达

0、前言 Mid360参数 1、代码拉取 2、代码编译运行 文件结构 编译流程&#xff1a; 1、先编译livox_ros_driver2 2、编译整个工程文件 3、运行launch文件&#xff08;livox_ros_driver2&#xff09; 成功启动&#xff1a; 3、实物运行 看得出来&#xff0c;在rviz…

mac终端自定义命令打开vscode

1.打开终端配置文件 open -e ~/.bash_profile终端安装了zsh&#xff0c;那么配置文件是.zshrc&#xff08;打开zsh配置&#xff0c;这里举&#x1f330;使用zsh&#xff09; sudo open -e ~/.zshrc 2.在zshrc配置文件中添加新的脚本&#xff08;这里的code就是快捷命令可以进…