外贸网站一站式服务,网站开发 精品课程,重庆渝北论坛,WordPress分类获取子分类springboot的宽松绑定及属性处理类的构造注入
★ 如何使用属性处理类所读取的属性
属性处理类最终变成了Spring容器中的一个Bean组件#xff0c;因此接下来Spring即可将该Bean组件注入任意其他组件。 这种做法的好处是#xff1a;可以将大量的配置信息封装一个对象——所以…springboot的宽松绑定及属性处理类的构造注入
★ 如何使用属性处理类所读取的属性
属性处理类最终变成了Spring容器中的一个Bean组件因此接下来Spring即可将该Bean组件注入任意其他组件。 这种做法的好处是可以将大量的配置信息封装一个对象——所以这种方式被称为“类型安全的绑定”。
★ 宽松绑定
不要配置属性名与属性处理类的属性名完全相同。
▲ 比如有如下类
ConfigurationProperties(prefixorg.crazyit)
public class FkConfig
{private String remoteAddress; // Java类中的属性名总是驼峰写法
}▲ 配置文件中写成如下几种形式
1. 最主流Spring boot推荐写法烤串写法 org.ljh.remote-address; 2. 驼峰写法Spring boot也支持驼峰写法 org.ljh.remoteAddress;3. 下划线写法可选。org.ljh.remote_address;4. 全部大写的写法(原有的点号换成下划线属性名的单词之间无需任何分隔符。只用于通过环境变量配置属性时才使用这种写法。ORG_LJH_REMOTEADDRESS★ 配置List数组
▲ 在*.properties文件中配置List有两种方式- 简单地使用英文逗号隔开的多个值每个值代表一个List元素如前一个例子所示- 用标准的方括号语法来配置List。▲ 在*.yml文件中配置List也有两种方式- 以中划线开头来配置List列表项- 或简单地使用英文逗号隔开的多个值。不管是属性文件还是*.yml文件都可用英文逗号隔开的多个值来配置List。★ 属性处理类ConfigurationProperties修饰的类使用构造器来注入
▲ 两个要求1. 使用ConstructorBinding修饰要执行构造器注入的构造器。如果该类仅有一个构造器可直接用ConstructorBinding修饰该类即可。——由于该类仅有一个构造器因此用ConstructorBinding修饰该类就相当于修饰了唯一的构造器。2. 只能使用EnableConfigurationProperties或ConfigurationPropertiesScan来启用属性处理类。备注在这种情况下不能使用将属性处理类配置成容器中的Bean的形式来启用它。代码演示
演示如何通过构造器注入的方式一次性读取yml配置文件中的多个属性值
解释 1、使用 ConstructorBinding 注解 修饰 要执行构造器注入操作的构造器 用 ConstructorBinding 这个注解就不能用 Component 来启动 ConfigurationProperties 注解了 2、修改yml配置的名称这里我是随便写的主要是为了体现上面说的宽松绑定就是驼峰写法烤串写法之类的 3、这里只用 getter 方法不用 setter 方法因为返回的任何java对象默认是由Jackson负责将它转换为JSON字符串因此Jackson默认根据getter方法进行转换 4、然后用ConfigurationPropertiesScan(“cn.ljh.boot.config”)注解让springboot去扫描config这个包及其子包下面的处理类
这个构造器注入和这篇 【使用ConfigurationProperties注解一次性拿到application.yml 配置文件中的多个属性值】对比下写法 结果