本文介绍了SpringBoot中除了@Value外的另一种读取配置参数方式——@ConfigurationProperties的基本使用和作用,并且基于源码完成了基本实现。
涉及的知识点: 1. yaml配置文件的解析
2. BeanPostProcessor 的后置增强功能
3. 注解解析和基本的反射调用
4.简单的字符串处理
一. @ConfigurationProperties的作用是什么? 怎么使用?
@ConfigurationProperties用于加在属性类上,被BeanPostProcessor初始化后增强解析注解后,从读取到的配置参数通过Setter注入值到成员变量中,然后即可通过Getter从成员变量中获取从配置读取到的参数值
使用步骤: 1. 定义属性类PatternProperties,定义与配置文件中参数名一致的成员变量
2. 在类上添加@ConfigurationProperties(perfix = 参数名前缀),加上@Component
3. 可使用lombok快速定义Getter和Setter
4. 添加BeanPostProcessor
参考图片1
参考图片2
参考图片3
二. 理解了原理之后,自定义注解@MyConfigurationProperties和MyBeanPostProcessor(BeanPostProcessor的实现类)
参考图片4 (使用自定义注解)
参考图片5 (定义BeanPostProcessor重写初始化后增强并加入Spring容器)
参考图片6 (同图片5)
参考图片7 (添加Yaml依赖,从配置文件读取参数)