Springboot读取配置

简介: Springboot读取配置

💖@Value

@Value是一个用于将配置文件(.properties或.yml文件)中的属性值注入到Java类中的注解。

  • @Value("${}"):可以获取对应属性文件中定义的属性值。
  • @Value("#{}"):表示 SpEl 表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。

在yml中定义配置属性值

custom:
  name: 玩不转
  account: lonewalker

示例在类中使用@Value

提示:由 Spring 管理的 bean 中使用 @Value注解才会生效

💖@ConfigurationProperties

@ConfigurationProperties可以用于类级别或方法级别上。在类级别上使用@ConfigurationProperties注解时,它将这个类标识为一个配置属性类。

使用方式:

  1. @ConfigurationProperties + @Component(或其它实例化Bean的注解)注解到bean定义类上
  2. @ConfigurationProperties + @Bean注解到配置类的bean定义方法上
  3. @ConfigurationProperties注解到普通类,然后通过@EnableConfigurationProperties定义为bean

示例:

这里的字符串custom会和类中的属性名称组成全限定名去配置文件中查找

💖获取List和Map数据

💖字符串转List

如果是这种字符串拼接的,可通过以下方式获取

@Value("#{'${custom.list:}'.empty ? null : '${custom.list:}'.split(',')}")

首先这是一个EL表达式,${test.list:} 是为它加上默认值但是这样有个问题,当不配置该 key 值,默认值会为空串,它的 length = 1,这样解析出来 list 的元素个数就不是空了,所以在此之前先判断一下是否为空。

💖@PropertySource

通过@PropertySource注解指定要加载的属性文件路径。

比如读取person.properties文件

相关文章
|
Linux Docker 容器
centos 7.9 部署 harbor 镜像仓库实践
centos 7.9 部署 harbor 镜像仓库实践
centos 7.9 部署 harbor 镜像仓库实践
|
编译器 C语言 C++
C++中.h和.hpp文件有什么区别?
C++中.h和.hpp文件有什么区别?
|
数据采集 存储 数据处理
使用R语言进行生存分析
【4月更文挑战第26天】R语言在生存分析中发挥着关键作用,尤其在医学、生物统计学和社会科学领域。借助"survival"包,研究者可处理生存数据、拟合模型并解释结果。
324 2
|
11月前
输出当前文件执行代码
【10月更文挑战第11天】输出当前文件执行代码。
75 4
|
存储 C语言 C++
数据结构/C++:二叉搜索树
数据结构/C++:二叉搜索树
97 1
|
存储 负载均衡 网络协议
CTK框架 - 服务工厂
服务工厂的作用: 1.在服务中可以知道是哪个其他插件在使用它; 2.懒汉式使用服务,需要的时候才new; 3.工厂其他插件使用有服务工厂和使用无服务工的服务,没有任何区别,代码都一样; 4.可根据需要创建多种实现的服务,就是:多种服务对应一个插件。
157 0
|
消息中间件 JSON 关系型数据库
EventBridge 集成云服务实践
本篇文章主要向大家分享了通过 EventBridge 如何集成云产品事件源,如何集成云产品事件目标以及通过事件流如何集成消息产品。
387 0
EventBridge 集成云服务实践
|
消息中间件 缓存 架构师
P5直升P7!“阿里爸爸”最新出品年薪30W~120WJava架构师学习路线
2022年是对程序员极不友好的一年,像往年这个时间段一般是程序员跳槽涨薪的黄金期,是很多程序员集体往大厂冲刺的时间段;但由于上一季度国内疫情反复,各大厂纷纷裁员,整得整个互联网行业人心惶惶,纷纷质疑:大厂还值得去吗?程序员这个行业是不是不行了?我还有必要继续学习吗?
|
Java jenkins 持续交付
Jenkins - 解决集成 jmeter+ant 发送邮件时报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
Jenkins - 解决集成 jmeter+ant 发送邮件时报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
624 0
Jenkins - 解决集成 jmeter+ant 发送邮件时报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage