Spring源码
2023-11-03 13:54:26 6 举报
AI智能生成
springIOC
作者其他创作
大纲/内容
spring核心IOC实现
准备工作
1.创建bean工厂的实例
this.beanFactory = new DefaultListableBeanFactory();
2.注册内置的PostProcessor
this.reader = new AnnotatedBeanDefinitionReader(this);
internalConfigurationAnnotationProcessor
ConfigurationClassPostProcessor
ConfigurationClassPostProcessor
internalEventListenerFactory
DefaultEventListenerFactory
DefaultEventListenerFactory
internalEventListenerProcessor
EventListenerMethodProcessor
EventListenerMethodProcessor
internalAutowiredAnnotationProcessor
AutowiredAnnotationBeanPostProcessor
AutowiredAnnotationBeanPostProcessor
子主题
internalCommonAnnotationProcessor
CommonAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
子主题
internalRequiredAnnotationProcessor
RequiredAnnotationBeanPostProcessor
RequiredAnnotationBeanPostProcessor
子主题
AnnotationAwareOrderComparator
ContextAnnotationAutowireCandidateResolver
3.注册扫描器
this.scanner = new ClassPathBeanDefinitionScanner(this);
4.注册配置类
register(annotatedClasses);
监听器
解析BeanDefinition
invokeBeanFactoryPostProcessors
1.解析配置类的注解,比如@Bean,@Compoent,@Import等ConfigurationClassParser
2.以解析扫描注解为例,扫描包解析器:CompoentScanParser
3.拿到包扫描路径进行扫描: ClassPathBeanDefinitionScaner.doScan(),这里创建了一个新的扫描器
4.拿到所有的.class对象判断是否有@Compoent
5.判断是否有接口,抽象:重写
6.BeanDefinitionRegistry注册BeanDefinition
2.以解析扫描注解为例,扫描包解析器:CompoentScanParser
3.拿到包扫描路径进行扫描: ClassPathBeanDefinitionScaner.doScan(),这里创建了一个新的扫描器
4.拿到所有的.class对象判断是否有@Compoent
5.判断是否有接口,抽象:重写
6.BeanDefinitionRegistry注册BeanDefinition
注册BeanPostProcessor
Bean创建过程
refresh()
finishBeanFactoryInitialization()
preInstantiateSingletons()
getBean
doGetBean
实例化
属性注入
循环依赖
初始化
0 条评论
下一页