如何在 Spring Boot 中实现自定义属性

embedded/2025/1/24 11:54:53/

🎬 秋野酱:《个人主页》
🔥 个人专栏:《Java专栏》《Python专栏》

⛺️心若有所向往,何惧道阻且长

文章目录

    • Spring Boot 自定义属性配置指南
    • 一、引言
    • 二、使用 @Value 注解读取单个配置项
      • 代码示例
      • 设置默认值
    • 三、使用 @ConfigurationProperties 处理复杂配置
      • 简单复杂配置示例(application.yml)
      • 对应的 Java 类
      • 测试代码
    • 更复杂属性配置示例(application.yml)
      • 对应的 Java 类
    • 四、总结

Spring Boot 自定义属性配置指南

一、引言

在 Spring Boot 应用里,application.yml 是极为常用的配置文件格式。相较于传统的 .properties 文件,它最大的优势在于能够以层次化的形式来组织配置信息,使得配置内容更加直观易懂。
接下来,本文会详细阐述如何在 Spring Boot 项目中读取和运用 application.yml 里的配置信息,并且会通过两种不同的方式展开介绍。

二、使用 @Value 注解读取单个配置项

若你仅仅需要读取某一个单独的配置项,那么使用 @Value 注解是个不错的选择。以获取程序的端口号为例:
配置文件示例(application.yml)

server:port: 9999

代码示例

@Slf4j
@SpringBootTest
class SpringAppApplicationTests {@Value("${server.port}")private String port;@Testpublic void test() {log.info("端口号:{}", port);}
}

设置默认值

此外,你还能为属性设置默认值。当配置文件中不存在该属性时,程序就会读取默认值。示例如下:

@Value("${server.port:8888}")
private String port;

三、使用 @ConfigurationProperties 处理复杂配置

要是面对多个配置项或者复杂的配置结构,使用 @ConfigurationProperties 注解会是更佳的解决方案。

简单复杂配置示例(application.yml)

user:username: "admin"#  password: "123123"

对应的 Java 类

@Data
@Component
@ConfigurationProperties(prefix = "user") // 设置属性前缀
public class UserProperties {private String username;private String password = "123456"; // 设置默认值
}

测试代码

@Slf4j
@SpringBootTest
class SpringAppApplicationTests {@Resourceprivate UserProperties userProperties;@Testpublic void test() {log.info("用户名:{}", userProperties.getUsername());log.info("密码:{}", userProperties.getPassword());}
}

更复杂属性配置示例(application.yml)

对于更为复杂的属性配置,可按如下方式操作:

user:name: "秋野"age: 21birthday: "2003-8-28"vip: truehobbyList:- "敲代码"- "写代码"- "打游戏"ageArray:- 18- 19- 20propList:- username: "张三"password: "18"age: 18birthday: "1990-01-01"- username: "李四"password: "18"

对应的 Java 类

@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {private String name;private Integer age;@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday;private Boolean vip;private List<String> hobbyList;private List<Integer> ageArray;private List<UserProperties> propList;
}

四、总结

综上所述,对于简单的配置需求,使用 @Value 注解可以快速实现配置读取。而当遇到复杂的配置结构时,@ConfigurationProperties 注解则能更好地应对,帮助你更高效地管理和使用配置信息。


http://www.ppmy.cn/embedded/156558.html

相关文章

WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理

WPF基础 | 深入 WPF 事件机制&#xff1a;路由事件与自定义事件处理 一、前言二、WPF 事件基础概念2.1 事件的定义与本质2.2 常见的 WPF 事件类型 三、路由事件3.1 路由事件的概念与原理3.2 路由事件的三个阶段3.3 路由事件的标识与注册3.4 常见的路由事件示例 四、自定义事件处…

基于RAG构建Text2SQL的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…

Docker的原理:如何理解容器技术的力量

在今天的软件开发和运维中&#xff0c;Docker 已经成为了一个炙手可热的技术名词。它改变了开发者和运维人员的工作方式&#xff0c;使得应用的打包、分发、运行变得更加简便和高效。然而&#xff0c;很多人虽然在使用 Docker&#xff0c;但对它的内部原理了解却并不深入。今天…

一文大白话讲清楚webpack基本使用——3——图像相关loader的配置和使用

文章目录 一文大白话讲清楚webpack基本使用——3——图像相关loader的配置和使用1. 建议按文章顺序从头看是看2. 图像文件Loader的配置和使用2.1 file-loader2.2 url-loader 一文大白话讲清楚webpack基本使用——3——图像相关loader的配置和使用 1. 建议按文章顺序从头看是看…

@RabbitListener处理重试机制完成后的异常捕获

application.properties中配置开启手动签收 spring.rabbitmq.listener.direct.acknowledge-modemanual spring.rabbitmq.listener.simple.acknowledge-modemanual定义一个重试器 Slf4j Configuration public class RabbitMQRetryConfing {Bean("customRetry")publi…

【JAVA 基础 第(20)课】JDBC JAVA 连接 MySql 数据库

pom.xml 导入 MySql jar 包 <!-- 导入Mysql数据库链接jar包 --> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version> </dependency> 数据库驱动、连接封装成…

oem解锁时不识别设备

问题原因&#xff1a; 1.没有打开开发者模式中的oem解锁开关 2.没有更新adb驱动程序 解决方法&#xff1a; 1.在网上找一个google驱动程序&#xff08;adb或者platform-tools包&#xff09; 2.连接机器&#xff0c;在电脑上选择 “我的电脑 - 右键 - 管理 - 设备管理器 - 软件…

JAVA基础语句整理

Java是一种广泛使用的面向对象编程语言&#xff0c;它具有简洁、强大、跨平台等特性。以下是Java中的一些基础语句和概念&#xff0c;适合初学者了解&#xff1a; 1. 类与对象 Java是基于类的&#xff0c;程序的基本单位是类&#xff08;class&#xff09;。对象是类的实例。…