一、spring内置的BeanDefinitionRegistryPostProcessor及其作用

何为BeanDefinitionRegistryPostProcessor?

BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的拓展接口

☆ConfigurationClassPostProcessor

ConfigurationClassPostProcessor这个类何时被加载到Spring容器中?

实例化AnnotationConfigApplicationContext中的AnnotatedBeanDefinitionReader时,将ConfigurationClassPostProcessor封装成BeanDefinition,放入到BeanFactory中。

ConfigurationClassPostProcessor何时被初始化?

ConfigurationClassPostProcessor何时被执行?

会先执行

后执行

为什么会先执行postProcessBeanDefinitionRegistry()方法,再执行postProcessBeanFactory()方法?

ConfigurationClassPostProcessor的两个方法都做了什么工作?

1、ConfigurationClassPostProcessor#postProcessBeanDefinitionRegistry

对加了@Configuration注解的类的进行解析。获取@PropertySource、@ComponentScan、@ImportResource、@Import等注解,根据这些注解完成特定工作。

  • 解析@ComponentScan注解中的包路径,扫描包路径下有@Component的类,以及在@Configuration中定义的@Bean,

       将这些类封装成BeanDefinition,放入到BeanFactory中。

       @Component有很多子注解,它们是:@Configuration、@Controller、@Service、@Repository,也可以自定义注解。

  • 解析@ImportResource可以解析xml文件。
  • 解析@Import,@Import是Spring中很重要的一个拓展点。

       @Import的类分为三种类型:

  1.  一般的普通类
  2. ImportSelector接口的子类
  3. ImportBeanDefinitionRegistrar接口的子类

2、ConfigurationClassPostProcessor#postProcessBeanFactory

  • 对加了@Configuration的类进行动态代理;
  • 向BeanFactory中添加一个ImportAwareBeanPostProcessor

 

下一篇  二、Spring内置的BeanFactoryPostProcessor及其作用

 

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Cloud是一个用于构建分布式系统的框架,提供了一系列常用组件来简化开发和管理分布式应用程序。 1. Spring Cloud Eureka: 服务注册与发现组件,用于实现服务的注册与发现,方便各个微服务之间的通信。 2. Spring Cloud Ribbon: 客户端负载均衡工具,基于HTTP和TCP协议,通过封装实现了服务之间的负载均衡和故障转移。 3. Spring Cloud Feign: 声明式的HTTP客户端工具,可以通过简单的注解实现服务之间的调用和通信。可以方便地将服务之间的REST模板请求自动转换成客户端负载均衡的服务调用。 这些组件可以相互结合使用,帮助开发者构建高可用、高性能、弹性的分布式系统。通过使用这些组件,开发者可以简化微服务架构下的开发和管理工作,提高开发效率和系统的可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring Cloud 五大组件及其功能](https://blog.csdn.net/wlg9527/article/details/106123683)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [springcloud各组件作用](https://blog.csdn.net/apple_51491580/article/details/123309501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值