ConfigurationProperties配置文件原理

ConfigurationProperties配置文件原理

ConfigurationProperties配置原理

我们知道@EnableConfigurationProperties和@ConfigurationProperties的注解是配合使用的。那么我们分别分析下这两个注解的作用。
@EnableConfigurationProperties

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(EnableConfigurationPropertiesImportSelector.class)
public @interface EnableConfigurationProperties {
   
	/**
	 * Convenient way to quickly register {@link ConfigurationProperties} annotated beans
	 * with Spring. Standard Spring Beans will also be scanned regardless of this value.
	 * @return {@link ConfigurationProperties} annotated beans to register
	 */
	Class<?>[] value() default {
   };
}

我们通过代码看到了其存在一个@Import注解,其引入的EnableConfigurationPropertiesImportSelector.class类,不清楚的可以去网上查询下相关资料。@Import注解可以引入相关的Bean,然后自动会往容器中注入相关的对象Bean。

class EnableConfigurationPropertiesImportSelector implements ImportSelector {
   

	private static final String[] IMPORTS = {
    ConfigurationPropertiesBeanRegistrar.class.getName(),
			ConfigurationPropertiesBindingPostProcessorRegistrar.class.getName() };

	@Override
	public String[] selectImports(AnnotationMetadata metadata) {
   
		return IMPORTS;
	}
	....省略以下代码....
}

可以知道其引入了ConfigurationPropertiesBeanRegistrar和ConfigurationPropertiesBindingPostProcessorRegistrar两个对象,所以我们思考下,这两个类究竟是干什么的呢??我们一一分析

ConfigurationPropertiesBeanRegistrar.class
public static class ConfigurationPropertiesBeanRegistrar implements ImportBeanDefinitionRegistrar {
   
		//可以看出来,通过注解元素去往容器中注册相应的BeanDefinition
		@Override
		public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
   
			getTypes(metadata).forEach((type) -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值