Spring-this()和scan()步骤解析
2021-05-13 14:00:31 0 举报
Spring-this()和scan()步骤解析
作者其他创作
大纲/内容
添加扫描对象registerDefaultFilters
回调
第一步
拿到系统参数配置环境getOrCreateEnvironment
调用
返回
扫描包路径加载Bean文件findCandidateComponents
构建一个默认Bean工厂DefaultListableBeanFactory()
ACLC的构造方法
不等于
如果继承于GenericApplicationContext则调用getDefaultListableBeanFactory()方法
拿到系统配置参数属性
AnnotationConfigApplicationContext
遍历资源数组
scan方法
String packageSearchPath = \"classpath*:\" + this.resolveBasePackage(basePackage) + '/' + this.resourcePattern;
第三步
放入Set对象,为什么用set?去重
第二步
getResources()解析
getDefaultListableBeanFactory()
ClassPathBeanDefinitionScanner
这里主要是加载扫描对象
拿到父类构造的BeanFactory对象返回
this()
返回资源数组组
注入this类,this就是当前类AnnotationConfigApplicationContext
系统环境在工厂对象中已Bean的方式存在
获得Bean个数
构建了一个工厂对象unwrapDefaultListableBeanFactory
无参构建
实现
1.判断是否是AntPath表达式
组装文件路径转为InputerStream流对象
调用资源资源拼接文件路径
classpath*:E:\\J2EE-CSDN\\Spring-Source code\\Spring-SourceCode01\\target\\classes/**/*.class ,找到该路径下面所有.class文件
实力化scopemetata元数据对象
构建ScannedGenericBeanDefinition对象将元数据注入进去,将资源信息注入进行
调用接口
registerAnnotationConfigProcessors
将this()对象转为ResourceLoader对象
设置默认的注解
value是否等于\"\"
如果属于工厂类型强转为工厂类型,强转为工厂
GenericApplicationContext
调用我们第一步生成扫描器方法ClassPathBeanDefinitionScanner
将BeanDefinition对象和BeanName转为BeanDefinitionHolder
第四步
根据元数据拿到类名设置value
第二步加载资源后,遍历资源
注入后置函数处理器
直接拿到vlue里的值
扫描类返回资源数组
ClassPathBeanDefinitionScanner中拿到doScan()方法
判断有没有resourcePatternResolver对象
BeanDefinitionRegistry.getBeanDefinition()方法
设置默认注解的值
this()就是AnnotationConfigApplicationContext对象,4层接口的继承类,大而全,高富帅对象
继承
构建
useDefaultFilters=true(默认加载自动扫描函数)
拿到根路径,组建容器,根据根路径扫描
接口InputStreamSource
是
放入容器,递归到把路径解析完
详解第一步:判断BeanFcotory中是否包含Bean
调用FindAllClass方法,根据根路径找到Reource对象
等于
设置代理对象
scanCandidateComponents
详解第一步:构建工厂unwrapDefaultListableBeanFactory
详解第三步:将默认后置处理器源转为BeanDefinitionHolder添加进去
判断当前的this类型
调用父类GenericApplicationContext中的getBeanDefinition()返回是否包含
调用resourcePatrren中的getResources()方法
这里主要构造的是Bean工厂和后置处理器
AnnotatedBeanDefinitionReader(this)
根据元数据拿到beanName的Value值
否
给BeanDefinition对象设置作用域值
没有
创建一个PathMatchingResourcePatternResolver
注入BeanFctory工厂当中
0 条评论
下一页