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

🎬 秋野酱:《个人主页》

🔥 个人专栏:《Java专栏》《Python专栏》

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

文章目录

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;

    @Test
    public 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 {
    @Resource
    private UserProperties userProperties;

    @Test
    public void test() {
        log.info("用户名:{}", userProperties.getUsername());
        log.info("密码:{}", userProperties.getPassword());
    }
}

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

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

复制代码
user:
  name: "秋野"
  age: 21
  birthday: "2003-8-28"
  vip: true
  hobbyList:
    - "敲代码"
    - "写代码"
    - "打游戏"
  ageArray:
    - 18
    - 19
    - 20
  propList:
    - username: "张三"
      password: "18"
      age: 18
      birthday: "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 注解则能更好地应对,帮助你更高效地管理和使用配置信息。

相关推荐
韩立学长7 分钟前
基于Springboot的研学旅游服务系统5u416w14(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·旅游
百***618714 分钟前
springboot整合mybatis-plus(保姆教学) 及搭建项目
spring boot·后端·mybatis
q***615015 分钟前
eclipse配置Spring
java·spring·eclipse
Miraitowa_cheems30 分钟前
LeetCode算法日记 - Day 106: 两个字符串的最小ASCII删除和
java·数据结构·算法·leetcode·深度优先
q***581932 分钟前
Spring全家桶简介
java·后端·spring
isNotNullX34 分钟前
怎么理解ETL增量抽取?
数据库·数据仓库·etl·企业数字化
谅望者38 分钟前
数据分析笔记14:Python文件操作
大数据·数据库·笔记·python·数据挖掘·数据分析
l1t42 分钟前
调用python函数的不同方法效率对比测试
开发语言·数据库·python·sql·duckdb
武昌库里写JAVA43 分钟前
微擎服务器配置要求,微擎云主机多少钱一年?
java·vue.js·spring boot·后端·sql