00-spring启动(准备bean)
2021-11-25 01:14:23 0 举报
spring源码启动过程
作者其他创作
大纲/内容
注册过滤器
\tpublic AnnotationConfigApplicationContext() {}
beanDefiniton ---> Object bean
获取messageSource对象
执行LifeCyclespring::start
1、设置比较器2、设置注解解析器
refresh();
invokeBeanFactoryPostProcessors(beanFactory);
构造方法
将事件监听器添加到事件发布器
BeanFactory核心
this.scanner = new ClassPathBeanDefinitionScanner(this);
添加默认类型转换器
DefaultListableBeanFactory beanFactory;
创建型模式工厂设计模式
创建型设计模式1、单例模式2、多例模式
初始化事件发布器
是否支持EL表达式
finishBeanFactoryInitialization(beanFactory);
BeanPostProcessors(List)
prepareRefresh();
finishRefresh();
BeanPostProcessor添加AppAware回调
初始化国际化
父类
行为型模式(CDN)模板设计模式initPropertySources();
BeanPostProcessor添加ApplicationListeners
创建
this.beanFactory = new DefaultListableBeanFactory();
this.reader = new AnnotatedBeanDefinitionReader(this);
将AppConfig注册到BeanDefinitionMap
prepareBeanFactory(beanFactory);
registerBeanPostProcessors(beanFactory);
实例化非懒加载单例bean
GenericApplicationContext. GenericApplicationContext()
AnnotatedBeanDefinitionReader reader;
设置类加载器
new AnnotationConfigApplicationContext(AppConfig.class)
适配器模式对接口、类、方法进行适配(容易造成代码复杂化)
singleton池
beanDefinitionMap中添加多个rootBean1、ConfigurationClassPostProcessor2、AutowiredAnnotationBeanPostProcessor3、CommonAnnotationBeanPostProcessor4、EventListenerMethodProcessor5、DefaultEventListenerFactory
注册类型转化器ConversionService
initApplicationEventMulticaster();
ClassPathBeanDefinitionScanner scanner;
扫描获取beanDefinition
register(componentClasses);
initMessageSource()
BeanDefinitonMap
启动
占位符表达式解析器环境配置项---${xxx}
registerListeners();
注册BeanPostProcessor
获取applicationEventMulticaster对象
beanFactory.preInstantiateSingletons();
0 条评论
回复 删除
下一页