@ConfigurationProperties实现自定义配置绑定
@ConfigurationProperties使用
创建一个类,类名上方注解,配置prefix属性,如下代码:
@ConfigurationProperties(
prefix = "hello.properties"
)
public class MyProperties {
private String myKey;
private List<String> stringList;
private Duration duration;
public String getMyKey() {
return myKey;
}
public void setMyKey(String myKey) {
this.myKey = myKey;
}
public List<String> getStringList() {
return stringList;
}
public void setStringList(List<String> stringList) {
this.stringList = stringList;
}
public Duration getDuration() {
return duration;
}
public void setDuration(Duration duration) {
this.duration = duration;
}
@Override
public String toString() {
return "MyProperties{" +
"myKey='" + myKey + '\'' +
", stringList=" + stringList +
", duration=" + duration +
'}';
}
}
prefix属性是配置文件里的前缀,即配置文件中以
前缀 + 变量名`的形式配置一条记录,来对应类中的一个变量,如下:
hello.properties.myKey=hello
hello.properties.duration=20s
hello.properties.string-list[0]=Acelin
hello.properties.string-list[1]=nice
@ConfigurationProperties特点
宽松绑定
如下配置都是可以被识别绑定的:
hello.properties.myKey=hello
hello.properties.mykey=hello
hello.properties.my-key=hello
hello.properties.my_key=hello
hello.properties.MY_KEY=hello
hello.properties.MY-KEY=hello
支持复杂属性类型
- 支持从配置参数中解析 durations (持续时间)
hello.properties.duration=20s
- List 和 Set
hello.properties.string-list[0]=Acelin
hello.properties.string-list[1]=nice
激活@ConfigurationProperties
通过@EnableConfigurationProperties
如果一个配置类只单单用@ConfigurationProperties注解,那么在IOC容器中是获取不到properties 配置文件转化的bean。我们可以在想要使用该配置类的类上注解@EnableConfigurationProperties,并配置相关的类,即可拿到该装配好配置的类了。如下所示:
通过@ConfigurationPropertiesScan
该注解有点类似与@CompomentScan注解扫描@Compoment注释的类相似,也是用来扫描项目中@ConfigurationProperties注解的类,并注入spring容器中。只需将该注解注释于项目启动类上即可
其实@ConfigurationProperties更多的作用是将配置文件中的配置与类中变量对应上来,而上述两种方式是告诉Spring容器要把这个有配置特性的Bean在程序启动的时候给创建出来。那谈到的创建Bean,我们就会想到Spring创建Bean的各种方式,这些方式的同样能够激活@ConfigurationProperties,详细请看xxx
@ConfigurationProperties与@Value对比
- | @ConfigurationProperties | @Value |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据效验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
使用 Spring Boot Configuration Processor 完成自动补全
当我们在配置文件中写官方支持的配置的时候,我们都会发现的有自动补全配置的一个功能,那怎么也让我们自己的配置也实现这种功能呢?
其实当你用这个注解的时候,IDE是会提示你这一点的,她会在文件的上方提示你要可以配置自动补全的功能:
实现的方式就是项目导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
然后重新编译或运行项目:
项目会生产一个json文件
然后能够实现自动提示补全配置项的功能了
@ConfigurationProperties实现自定义配置绑定的更多相关文章
- Spring自定义配置--ConfigurationProperties
自定义配置的变量名: 在 *.properties 里面定义特定的变量 server.port=9000 amazon.associateId=habuma-20 建立Properties文件制定特定 ...
- 02.自定义banner、全局配置文件、@Value获取自定义配置、@ConfigurationProperties、profiles配置
自定义banner src/main/resource 下新建 banner.txt,字符复制到banner.txt 中 生成字符网站推荐: http://patorjk.com/software/t ...
- spring boot自定义类配置绑定在配置文件中自动提示
在spring boot的日常使用中,我们可能需要使用配置绑定的方式动态配置自定义类的成员变量. 这个时候,我们在配置文件中配置spring默认已有的配置时,只需要输入部分关键字即可自动提示,如下图: ...
- SpringBoot入门(五)——自定义配置
本文来自网易云社区 大部分比萨店也提供某种形式的自动配置.你可以点荤比萨.素比萨.香辣意大利比萨,或者是自动配置比萨中的极品--至尊比萨.在下单时,你并没有指定具体的辅料,你所点的比萨种类决定了所用的 ...
- SpringBoot基础系列之自定义配置源使用姿势实例演示
[SpringBoot基础系列]自定义配置源的使用姿势介绍 前面一篇博文介绍了一个@Value的一些知识点,其中提了一个点,@Value对应的配置,除了是配置文件中之外,可以从其他的数据源中获取么,如 ...
- Java之SpringBoot自定义配置与整合Druid
Java之SpringBoot自定义配置与整合Druid SpringBoot配置文件 优先级 前面SpringBoot基础有提到,关于SpringBoot配置文件可以是properties或者是ya ...
- ASP.NET Core的配置(3): 将配置绑定为对象[上篇]
出于编程上的便利,我们通常不会直接利用ConfigurationBuilder创建的Configuration对象读取某个单一配置项的值,而是倾向于将一组相关的配置绑定为一个对象,我们将后者称为Opt ...
- SpringMVC 自定义参数绑定实现日期类型绑定
package cn.itcast.ssm.controller.converter; import java.text.ParseException; import java.text.Simple ...
- SpringBoot编写自定义配置信息
⒈编写自定义配置类 1.浏览器配置 package cn.coreqi.security.properties; public class BrowserProperties { private St ...
随机推荐
- Docker:银河麒麟系统/Ubuntu/arm64-离线安装Docker,配置自启
下载离线包 离线安装包地址:https://download.docker.com/linux/debian/dists/stretch/pool/stable/ 注意: amd64是处理器64位 复 ...
- Nginx 实践:location 路径匹配
1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2.location 路径匹配 2.1 匹配规则: location 路径正则匹配: 符号 说明 ~ 正则匹配,区分大小 ...
- tf-gpu报错:ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory
错误1:ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory 一般这种问题 ...
- C语言代码段
/* 功 能:将str字符串中的oldstr字符串替换为newstr字符串 * 参 数:str:操作目标 oldstr:被替换者 newstr:替换者 * 返回值:返回替换之后的字符串 */ char ...
- Python 操作 MySQL 的5种方式
不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的5种方式,你可以在实 ...
- Spring Boot(一):如何使用Spring Boot搭建一个Web应用
Spring Boot Spring Boot 是Spring团队旗下的一款Web 应用框架 其优势可以更快速的搭建一个Web应用 从根本上上来讲 Spring Boot并不是什么新的框架技术 而是在 ...
- 使用python对工作簿每个sheet表进行数据可视化展示(本案例是从第2个sheet开始循环读取也就是索引为1的表)
# 导入相关模块from pyecharts.charts import Barfrom pyecharts import options as optsfrom pyecharts.charts i ...
- 单细胞分析实录(17): 非负矩阵分解(NMF)代码演示
本次演示使用的数据来自2017年发表于Cell的头颈鳞癌单细胞文章:Single-Cell Transcriptomic Analysis of Primary and Metastatic Tumo ...
- ubuntu平台下,字符集的转换命令iconv
iconv命令格式 iconv -f 源字符集(要转换文件的字符集) -t 目标字符集 file iconv -f gb18030 -t utf-8 file 默认情况下,不改变原文件,输出到屏幕. ...
- 部署springboot时出现的问题
一.打包出现问题 后经发现是因为maven的打包插件的版本问题,需要修改版本 <plugins> <plugin> <groupId>org.springframe ...