微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java中@ConfigurationProperties实现自定义配置绑定问题分析

这篇文章主要介绍了@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; } @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=20sList 和 Sethello.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,详细请看Spring Boot创建Bean的几种方式

@ConfigurationProperties与@Value对比

-

@ConfigurationProperties

@Value

功能

批量注入配置文件中的属性

一个个指定

松散绑定(松散语法)

支持

不支持

SpEL

不支持

支持

JSR303数据效验

支持

不支持

复杂类型封装

支持

使用 Spring Boot Configuration Processor 完成自动补全

当我们在配置文件中写官方支持的配置的时候,我们都会发现的有自动补全配置的一个功能,那怎么也让我们自己的配置也实现这种功能呢?

其实当你用这个注解的时候,IDE是会提示你这一点的,她会在文件的上方提示你要可以配置自动补全的功能

实现的方式就是项目导入依赖:

org.springframework.bootspring-boot-configuration-processor

然后重新编译或运行项目:

项目会生产一个json文件

然后能够实现自动提示补全配置项的功能

到此这篇关于Java中@ConfigurationProperties实现自定义配置绑定问题分析的文章就介绍到这了,更多相关@ConfigurationProperties自定义配置绑定内容搜索编程之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程之家!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐