🎬 秋野酱:《个人主页》
🔥 个人专栏:《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 注解则能更好地应对,帮助你更高效地管理和使用配置信息。