当前位置: 首页 > article >正文

Spring Boot 自定义属性

在这里插入图片描述

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则适用于复杂的配置结构


http://www.kler.cn/a/514986.html

相关文章:

  • 代码随想录算法训练营第 15 天(树3)| 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数
  • #攻防演练#应急响应#对于挖矿的检测以及防御方案
  • PCF8563一款工业级、低功耗多功能时钟/日历芯片
  • ChatGPT大模型极简应用开发-CH3-使用 GPT-4 和 ChatGPT 构建应用程序
  • 大模型:LangChain技术讲解
  • Linux 离线安装php+nginx+ftp
  • ZooKeeper 中的 ZAB 一致性协议与 Zookeeper 设计目的、使用场景、相关概念(数据模型、myid、事务 ID、版本、监听器、ACL、角色)
  • 【Elasticsearch】index.mapping.source.mode
  • 语义分割文献阅读-SegNet:一种用于图像分割的深度卷积编码器-解码器架构(1.13-1.19)
  • 计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫
  • 蓝桥杯真题 - 翻转 - 题解
  • 如何用Python和Dash打造一个智能股票筛选与可视化系统
  • 关于六通道串口服务器详细讲解
  • 手写SOCKET进行HTTP通信
  • 【云网】云网络基础概念(华为云)
  • 大模型 | AI驱动的数据分析:利用自然语言实现数据查询到可视化呈现
  • 基于STM32的智能空气质量监测与净化系统设计
  • 如何将办公室固定电话设置呼叫转接(或呼叫转移)到手机 -远程高效办公
  • DeepSeek R1发布综述:开源大语言模型的推理能力新标杆
  • Docker核心命令与Yocto项目的高效应用