Spring-ConfigurationClassPostProcessor类

ConfigurationClassPostProcessor

ConfigurationClassPostProcessor类为一个beanFactory后置处理其, 其中主要用以解析添加了@Configuration, @Component, @ComponentScan, @Import, @ImportResource, @Bean注解对应的类以及方法, 其整体解析流程如下:
在这里插入图片描述

注解解释

@Configuration

应用了@Configuration的类, 为配置类, 其可等同于xml配置, 其对应势力将会被创建CGlib代理类,以确保通过该配置类定义的bean实力在IOC容器中为单例或者与之定义的scope对应

@Component

应用了@Component的类, 可理解为组件类, 其中应用@service, @Controller注解的类,都可理解为组件类, 在解析@Component时, 会解析其类中的子类,是否被有应用配置注解

@ComponentScan

@ComponentScan定义类包名, 会解析对应定义包下中所有符合ClassPathBeanDefinitionScanner中includeFilters定义的所有类,并创建BeanDefinition

@Import

@Import中需要设置对应import类, AOP实现中@EnableAspectJAutoProxy中@Import对应的import类为AspectJAutoProxyRegistrar, 在事物中@EnableTransactionManagement中@Import对应的import类为TransactionManagementConfigurationSelector,解析如下:

  1. 若import类实现了ImportSelector接口, 则执行对应selectImports()方法获取其他import类;
  2. 若inport类实现ImportBeanDefinitionRegistrar接口, 则实例化对应对象, 并添加到configClass的importBeanDefinitionRegistrars属性中,其后通过ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars()方法执行对应registerBeanDefinitions()方法;
  3. 其他情况,则作为配置类, 递归进行解析;
@ImportResource

其入参为资源文件地址, 可以为xml, groovy配置文件, 在JavaConfig以及SpringBoot中,可通过该注解加载xml配置文件

@Bean

@Bean注解应用在方法中, 对应方法将会构造BeanMethod并存储在configClass类beanMethods属性中,其后通过ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod()创建对应BeanDefinition对象,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值