概述
ConfigurationPropertiesAutoConfiguration是Spring Boot关于处理使用注解@ConfigurationProperties的bean组件的自动配置类。
具体来讲,ConfigurationPropertiesAutoConfiguration引用了注解@EnableConfigurationProperties,而注解@EnableConfigurationProperties导入了EnableConfigurationPropertiesImportSelector,EnableConfigurationPropertiesImportSelector所做的工作,才真正是ConfigurationPropertiesAutoConfiguration最终预期的效果。
EnableConfigurationPropertiesImportSelector是Spring Boot提供的一个ImportSelector实现,其目的是绑定外部属性到使用了注解@ConfigurationProperties的属性配置bean上。但具体的属性绑定的动作并不是由它自身完成的,而是由它所指定的两个ImportBeanDefinitionRegistrar所注册到容器的bean来完成的 :
ConfigurationPropertiesBeanRegistrar
该ImportBeanDefinitionRegistrar是EnableConfigurationPropertiesImportSelector定义的一个内部类,它用于获取配置类上注解@EnableConfigurationProperties指定的要注册为bean的属性配置类,并将它们作为bean注册到容器。ConfigurationPropertiesBindingPostProcessorRegistrar
EnableConfigurationPropertiesImportSelector通过ConfigurationPropertiesBindingPostProcessorRegistrar注册一个ConfigurationPropertiesBindingPostProcessor到容器,该ConfigurationPropertiesBindingPostProcessor则会扫描每个bean,如果该bean是一个使用了注解@ConfigurationProperties的bean,则将@ConfigurationProperties注解所指定的属性绑定为该bean的属性。
EnableConfigurationPropertiesImportSelector确保了属性绑定所需的ConfigurationPropertiesBeanRegistrar和ConfigurationPropertiesBindingPostProcessor两个工作组件提前就绪。
源代码
源代码版本 :
spring-boot-autoconfigure-2.1.3.RELEASE
package org.springframework.boot.autoconfigure.context;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* {@link EnableAutoConfiguration Auto-configuration} for {@link ConfigurationProperties}
* beans. Automatically binds and validates any bean annotated with
* {@code @ConfigurationProperties}.
*
* @author Stephane Nicoll
* @since 1.3.0
* @see EnableConfigurationProperties
* @see ConfigurationProperties
*/
@Configuration
@EnableConfigurationProperties // ⇐ 主要动作
public class ConfigurationPropertiesAutoConfiguration {
}

本文深入解析SpringBoot中ConfigurationPropertiesAutoConfiguration的工作原理,包括如何使用@EnableConfigurationProperties注解自动注册并绑定配置属性到bean组件,以及ConfigurationPropertiesBeanRegistrar和ConfigurationPropertiesBindingPostProcessor在这一过程中的关键作用。
1230

被折叠的 条评论
为什么被折叠?



