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

Spring Boot 注解探秘:常用配置值读取注解的魔力

在 Spring Boot 应用开发中,我们会常常借助Apollo,Spring Cloud Config等配置中心来集中管理配置信息,在拥有配置信息之后,高效且准确地读取这些配置信息无疑是极为关键的一环。今天我们就来介绍几个常用的用于配置值读取的注解。

@Value注解

@Value注解是 Spring 中一种非常方便的用于注入配置值的方式,支持基本数据类型。

public class Demo1{@Value("${url}")private String url;@Value("${gray.switch:true}")private boolean graySwitch;}

也支持数组以及列表类型。

    @Value("${publish.id.array}")private int[] publishId;@Value("${employee.list}")private List<String> employee;

这里补充一种场景,假如apollo服务端配置了key为url,  value为http://wuai.test.com。

本地变量给了默认值。

    @Value("${url:http://wuai.test1.com}")private String url;

yml给了默认值。

url: "http://wuai.test2.com"

那么在应用启动的时候读取的url的值是哪个呢? http://wuai.test.com。

如果服务端配置没有url,那么读取到的url是http://wuai.test1.com。本地变量没有默认值,读取到的url是http://wuai.test2.com

@ApolloJsonValue注解

@ApolloJsonValue是一个特定于 Apollo 配置中心的注解,它主要用于从 Apollo 配置中心读取以 JSON 格式存储的配置内容,并将其自动反序列化为 Java 对象。如,

public class User{private String name;private String sex;private Integer age;
}public class Demo2{@ApolloJsonValue("${user.config}")private User user;
}

以下是apollo配置。

@ConfigurationProperties 注解

@ConfigurationProperties注解是一个非常有用的工具,常用于将外部配置属性绑定到 Java 对象。

@Component
@ConfigurationProperties(prefix = "event.listener")
public class EventListenerConfig {private boolean enable;private List<String> events;}

@ConfigurationProperties注解还支持嵌套对象,如。

@Component
@ConfigurationProperties(prefix = "event")
public class EventConfig {private Object obj;@Component@ConfigurationProperties(prefix = "event.teller")public class EventTellerConfig {private boolean enable;private List<String> events;}}
http://www.lryc.cn/news/434226.html

相关文章:

  • Ps初步使用教程
  • 远程连接Hiveserver2服务
  • PDF样本图册转换为一个链接,随时打开无需印刷
  • 自己动手实现mybatis的底层框架(不用动态代理直接用执行器、用动态代理自己实现。图文分析!)
  • 项目日志——日志落地模块的设计、实现、测试
  • CTK框架(七):事件监听
  • 一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention
  • C语言 | Leetcode C语言题解之第396题旋转函数
  • 利士策分享,克服生活中的困难:走好勇攀高峰的每一步
  • PurchasereturnController
  • mysql 学习笔记 八
  • 反序列化漏洞练习2
  • 基于SpringBoot的社区医院管理系统
  • YOLOv8安装配置教程(Windows版)
  • Linux的历史,版本,Linux的环境安装、简单学习4个基本的Linux指令等的介绍
  • 【论文阅读】01-Survey on Temporal Knowledge Graph
  • 【AIGC】InstructPixPix:基于文本引导的图像编辑技术
  • 无人机动力系统设计之桨叶推力计算
  • LabVIEW重构其他语言开发的旧系统
  • [晕事]今天做了件晕事43 python-byte串长度与转义字符
  • 初识redis(String,Hash,List,Set,SortedSet)
  • Ton与ETH的一些独特的区别
  • C++ | Leetcode C++题解之第396题旋转图像
  • 前向渲染路径
  • Python画笔案例-040 绘制五角星顶圆
  • 【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例
  • 期货量化-群体优化算法:混合蛙跳算法(SFL)
  • tensorflow-线性回归python入门
  • VSCode学习笔记
  • 【Canvas与艺术】菊花孔雀螺旋