如何在 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 注解则能更好地应对,帮助你更高效地管理和使用配置信息。

相关推荐
小吴编程之路21 小时前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子21 小时前
MySQL集群技术
数据库·mysql
HalvmånEver21 小时前
7.高并发内存池大页内存申请释放以及使用定长内存池脱离new
java·spring boot·spring
凤山老林21 小时前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发21 小时前
Linux与数据库进阶
数据库
与衫21 小时前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫1 天前
Redis桌面客户端
数据库·redis·缓存
oradh1 天前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
赶路人儿1 天前
UTC时间和时间戳介绍
java·开发语言
dreamread1 天前
【SpringBoot整合系列】SpringBoot3.x整合Swagger
java·spring boot·后端