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

相关推荐
hfhf1531 小时前
电脑突然没有声音的可能原因与应对方法
java
Java资深爱好者1 小时前
如何在Android中实现SQLite数据库操作
android·数据库·sqlite
宝耶1 小时前
MySQL基础语句
数据库·mysql·oracle
LKAI.2 小时前
MongoDB备份与还原
linux·数据库·mongodb
dreams_dream2 小时前
docker启动jenkins,jenkins中调用docker
java·docker·jenkins
最懒的菜鸟3 小时前
Spring boot3-WebClient远程调用非阻塞、响应式HTTP客户端
spring boot·http
计算机-秋大田3 小时前
基于Spring Boot的国产动漫网站的设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·课程设计
站在墙头上3 小时前
java虚拟机(JVM)以及各种参数详解
java·开发语言·jvm
*星星之火*4 小时前
【GPT入门】第11课 FunctionCall调用本地代码入门
java·gpt·openai
Lojarro4 小时前
IDEA创建Springboot的五种方式
spring boot·后端·intellij-idea