Spring5..

在以后的日子里,我尽量做到不管心情好与坏,都不要影响自己学习,让外界对自己造成的影响越低越好-我是一个没有温度的码农–题记
//------------->今天我主要说一下3个
1.Import
2.@Configuration
3.full和lite
1.>Spring是如何解析@Import的三种类型的呢 ,之前也说过3种Import的实例 现在我们从源码的角度剖析他
ConfigurationClassParser#processImports
主要在于这个方法
1.1> 如果是ImportSelector
1>获取class类 然后得到他的new 对象
2>调用selectImports()方法获取数组对象
3>processImports() //递归调用 再次判断有没有加入@import
=========
此时不会有@Import ,然后就是是一个普通类
4>c在这里插入图片描述

此时就会调用这个方法 ,把我们的类放入configurationClasses 这个map中

但是如果实现了@ImportBeanDefinitionRegistrar 这个注解的执行流程
在这里插入图片描述
是加入到addImportBeanDefinitionRegistrar 这个map中
==================================================================================>
我们的普通类(@Import)是在扫描之后完成的注册–>@Configuration
//-------首先我们一个配置类
@Componscanner
@Import( )
Appconfig(){}
1.> @ComponentScan(value = “com.xxx”)
ClassPathBeanDefinitionScanner#doScan
这个方法扫描之后就注册了
然后才会处理@Import类
------------------------------------》
处理Import分3种 1>@Import(MyService.class)
2>@Import(ImportSelector.class)
3>@Import(ImportBeanDefinitionRegistrar.class)
如果是第一种的话就直接
processConfigurationClass(candidate.asConfigClass(configClass));
然后放入 this.configurationClasses.put(configClass,configClass);

this.reader.loadBeanDefinitions(configClasses); 然后会调用这个方法来处理Import
在这里插入图片描述
在这里处理的@Import 将他们加入到的map容器中
============================================

然后我们说下这个.@Configuration
在这里插入图片描述
此时我们加了@Configuration 这个注解,spring会给我们这个appconfig进行代理
org.springframework.context.annotation.ConfigurationClassPostProcessor#enhanceConfigurationClasses
在这个方法里面
在这里插入图片描述
Spring会判断配置类是full还是liter 如果是full 的话就会加入到configBeanDefs这个map中

主要是这里对appconfig进行了cglib动态代理
这个方法点进去
在这里插入图片描述
在这里进行了cglib代理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值