Java中@ConfigurationProperties实现自定义配置绑定问题分析
目录
- @ConfigurationProperties使用
- @ConfigurationProperties特点
- 宽松绑定
- 支持复杂属性类型
- 激活@ConfigurationProperties
- 通过@EnableConfigurationProperties
- 通过@ConfigurationPropertiesScan
- @ConfigurationProperties与@Value对比
- 使用 Spring Boot Configuration Processor 完成自动补全
@ConfigurationProperties使用 创建一个类,类名上方注解,配置prefix属性,如下代码:
@ConfigurationProperties(prefix = "hello.properties")public class MyProperties {private String myKey; private List stringList; private Duration duration; public String getMyKey() {return myKey; }public void setMyKey(String myKey) {this.myKey = myKey; }public List getStringList() {return stringList; }public void setStringList(List stringList) {this.stringList = stringList; }public Duration getDuration() {return duration; }public void setDuration(Duration duration) {this.duration = duration; }@Overridepublic String toString() {return "MyProperties{" +"myKey='" + myKey + '\'' +", stringList=" + stringList +", duration=" + duration +'}'; }}
prefix
属性是配置文件里的前缀,即配置文件中以前缀 + 变量名
的形式配置一条记录,来对应类中的一个变量,如下:hello.properties.myKey=hellohello.properties.duration=20shello.properties.string-list[0]=Acelinhello.properties.string-list[1]=nice
@ConfigurationProperties特点
宽松绑定
如下配置都是可以被识别绑定的:
hello.properties.myKey=hellohello.properties.mykey=hellohello.properties.my-key=hellohello.properties.my_key=hellohello.properties.MY_KEY=hellohello.properties.MY-KEY=hello
支持复杂属性类型
支持从配置参数中解析 durations (持续时间)
hello.properties.duration=20s
List 和 Set
hello.properties.string-list[0]=Acelinhello.properties.string-list[1]=nice
激活@ConfigurationProperties
通过@EnableConfigurationProperties
如果一个配置类只单单用@ConfigurationProperties注解,那么在IOC容器中是获取不到properties 配置文件转化的bean。我们可以在想要使用该配置类的类上注解@EnableConfigurationProperties,并配置相关的类,即可拿到该装配好配置的类了。如下所示:
通过@ConfigurationPropertiesScan
该注解有点类似与@CompomentScan注解扫描@Compoment注释的类相似,也是用来扫描项目中@ConfigurationProperties注解的类,并注入spring容器中。只需将该注解注释于项目启动类上即可
其实@ConfigurationProperties更多的作用是将配置文件中的配置与类中变量对应上来,而上述两种方式是告诉Spring容器要把这个有配置特性的Bean在程序启动的时候给创建出来。那谈到的创建Bean,我们就会想到Spring创建Bean的各种方式,这些方式的同样能够激活@ConfigurationProperties,详细请看Spring Boot创建Bean的几种方式
@ConfigurationProperties与@Value对比
- | @ConfigurationProperties | @Value |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据效验 | 支持 | 不支持 |
复杂类型封装 | 支持 |
使用 Spring Boot Configuration Processor 完成自动补全 当我们在配置文件中写官方支持的配置的时候,我们都会发现的有自动补全配置的一个功能,那怎么也让我们自己的配置也实现这种功能呢?
【Java中@ConfigurationProperties实现自定义配置绑定问题分析】其实当你用这个注解的时候,IDE是会提示你这一点的,她会在文件的上方提示你要可以配置自动补全的功能:
文章图片
实现的方式就是项目导入依赖:
org.springframework.boot spring-boot-configuration-processor
然后重新编译或运行项目:
项目会生产一个json文件
文章图片
然后能够实现自动提示补全配置项的功能了
文章图片
到此这篇关于Java中@ConfigurationProperties实现自定义配置绑定问题分析的文章就介绍到这了,更多相关@ConfigurationProperties自定义配置绑定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募