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

Spring属性注解对配置项名称的自动转换

一、前言 

       在Spring中,我们经常需要将配置文件中的属性值注入到Java类中。Spring提供了两个主要的注解来实现这一功能:@Value @ConfigurationProperties。其中 @ConfigurationProperties支持将配置项名称与Java类中的属性名进行自动转换,包括 '-' 和'驼峰命名'的转换;而@Value不支持。

二、@Value注解

@Value 注解用于将配置项的值注入到Java类的属性中。在使用 @Value 注解时,需要使用 ${} 表达式来引用配置项的名称,这个名称需要与配置项的完整名称完全匹配@Value 注解不支持自动转换 - 和驼峰命名,因此必须保证配置项的名称与 @Value 注解中的表达式一致。例如:

# 配置项
my-config-property-name=Hello World
@Value("${my-config-property-name}")
private String myConfigPropertyName;

三、@ConfigurationProperties 注解

@ConfigurationProperties 注解用于将一组配置项的值注入到一个Java类中。与 @Value 注解不同,@ConfigurationProperties 注解支持将配置项名称的 - 转换为驼峰命名的属性名。通过在类上使用 @ConfigurationProperties(prefix = "prefixName") 注解,可以将具有相同前缀的配置项注入到Java类的对应属性中。例如:

my-config.property-name=Hello World
@ConfigurationProperties(prefix = "my-config")
public class MyConfigProperties {private String propertyName;// getter 和 setter 方法
}

在上述代码中,配置项 "my-config.property-name" 的值 "Hello World" 会被注入到 MyConfigProperties 类的 propertyName 属性中。

四、小结

  • @Value 注解需要精确匹配配置项的名称,不支持自动转换 - 和驼峰命名
  • @ConfigurationProperties 注解支持将配置项名称的 - 转换为驼峰命名,提供了更灵活的配置项命名方式,可以通过 prefix 属性指定配置项的前缀。

正确使用 @Value @ConfigurationProperties 注解可以提高配置项的灵活性和代码的可读性。根据实际的需求和习惯,选择适合的注解来处理配置项,让配置更加简洁明了。

http://www.lryc.cn/news/101602.html

相关文章:

  • Docker 安全 Docker HTTPS请求过程与配置
  • DevOps(三)
  • AOP的妙用
  • CAN转ETHERCAT网关将CAN 总线和 ETHERCAT 网络连接方法
  • 【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。
  • mac使用mvn下载node-sass 会Binary download failed, trying source
  • 【C++】开源:Muduo网络库配置与使用
  • VCS ICO - Intelligent Coverage Optimization
  • 【分布式系统】分布式系统的8个谬误
  • tinkerCAD案例:25. 量角器 - 测量角度
  • Flutter 使用texture_rgba_renderer实现桌面端渲染视频
  • linux虚拟机开机后桌面显示CentOS-7.5-x86盘片文件,并且无法远程连接虚拟机?
  • 【Spring Boot 源码学习】走近 AutoConfigurationImportSelector
  • 系统学习Linux-MySQL数据库备份(四)
  • 具身智能controller---RT-1(Robotics Transformer)(中---实验介绍)
  • 无涯教程-jQuery - load( url, data, callback)方法函数
  • 【Shell】Shell编程之免交互
  • 从Vue2到Vue3【七】——Vue2中响应式原理的实现及其缺陷
  • 用C语言实现堆排序算法
  • tauri在github上进行自动更新打包并发版过程,实战操作避坑
  • css中flex后文本溢出的问题
  • restful接口设计规范[仅供参考]
  • Metabase 远程代码执行(CVE-2023-38646)
  • 【TiDB理论知识 07】SQL执行流程
  • 微服务——服务异步通讯RabbitMQ
  • 事件冒泡、事件捕获和事件委托
  • WEB 典型安全功能说明
  • SQL编译优化原理
  • qt signal slots lambda
  • Spring【声明式事务】