Logo
Spring Boot 自定义配置
所属分类:开发笔记
阅读量:726
评论数量:1
发布时间:2025-01-22 11:50
AI总结
ThriveX GPT
|

Spring Boot 自定义属性

Spring Boot 应用程序中,application.yml 是一个常用的配置文件格式。它允许我们以层次化的方式组织配置信息,并且比传统的 .properties 文件更加直观。

本文将介绍如何在 Spring Boot 中读取和使用 application.yml 中的配置信息,下面我将分别使用两种方式进行介绍

@Value

如果你只需要读取单个配置项,可以使用 @Value 注解。比如获取程序的端口号:

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 会是更好的选择。

user:
  username: "admin"
  #  password: "123123"
@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());
    }
}

对于复杂属性的可以这么做

user:
  name: "宇阳"
  age: 22
  birthday: "2002-10-11"
  vip: true
  hobbyList:
    - "敲代码"
    - "写代码"
    - "打游戏"
  ageArray:
    - 18
    - 19
    - 20
  propList:
    - username: "张三"
      password: "18"
      age: 18
      birthday: "1990-01-01"
    - username: "李四"
      password: "18"
@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则适用于复杂的配置结构

作者:宇阳

版权:此文章版权归 宇阳 所有,如有转载,请注明出处!

空状态
评论列表为空~
作者头像

一直对网站开发领域很感兴趣,从小就希望有一个属于自己的网站,在17年时候成功进入站长圈,并通过各种自学,以及各种折腾,才有了你现在看到的这个网站

ICP豫ICP备2020031040号-1
月亮搜索订阅返回顶部
Spring Boot 自定义配置