2023-09-14  阅读(2)
原文作者:王伟王胖胖 原文地址: https://blog.csdn.net/wangwei19871103/article/details/105718933

简单流程

202309142306357281.png

@ConfigurationProperties

这个是把一个类设置成配置属性,但是要绑定启用,得有个条件,就是得有@EnableConfigurationProperties注解,里面放入要启动的类。

例子

还是前面的例子,这次就加了ConfigurationProperties注解。

202309142306368952.png
然后找了个能注册到容器的配置类,加上EnableConfigurationProperties注解,写上启动的类。这里要注意EnableConfigurationProperties只要挂在能注册到容器的类就可以,没有规定是哪个类,只要里面加上你的配置属性类就可以,比如我这里是MyProperties.class

202309142306379283.png

然后可能加上依赖,否则可能没提示:

202309142306385704.png
然后在配置文件application.properties里配置:

202309142306394095.png
接着上篇的值的话,name应该是222,但是我们现在来看,要被覆盖了:

202309142306400846.png

202309142306409607.png
原来还能被覆盖,在实例初始化之前applyBeanPostProcessorsBeforeInitialization里被覆盖的,那肯定是有个处理器给处理了,是的,就是ConfigurationPropertiesBindingPostProcessor。下面就简单说下原理吧。

@EnableConfigurationProperties

关键是这个注解的importEnableConfigurationPropertiesRegistrar

202309142306416238.png
这个已经讲过好几遍了,在解析的时候会被创建放入一个集合里,然后在加载bean定义的时候执行registerBeanDefinitions

202309142306424009.png

EnableConfigurationPropertiesRegistrar的registerInfrastructureBeans注册基础bean

首先进行注册基础的bean,用来处理的:

2023091423064331910.png

ConfigurationPropertiesBindingPostProcessor的register

内部把自己注册进去了,而且不会重复,这个就是用来处理绑定属性的。

2023091423064410511.png

ConfigurationPropertiesBinder的register

还注册了配置属性绑定器,作用就是讲配置文件读取的属性帮定到配置属性。

2023091423064477512.png

ConfigurationPropertiesBeanRegistrar

然后创建ConfigurationPropertiesBeanRegistrar对象,将当前配置类上EnableConfigurationProperties注解的所有配置属性类注册到容器中。

2023091423064634313.png
然后获取他们的ConfigurationProperties注解的属性前缀,如果有的话就拼接beanName,否则就用全限定类名。

2023091423064851814.png
当然这个是第一步,先注册进容器,因为ConfigurationPropertiesBindingPostProcessor会在初始化之前的处理方法中去处理他们,让他们绑定上配置文件中的属性,具体怎么绑定的下篇说吧。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文