Spring IOC容器启动过程
2016-12-18 13:41
507 查看
IOC容器启动过程
资源定位(classpath,filesystem等)载入,将bean定义转换为内部数据结构BeanDefintion
向IOC容器注册bean
资源定位
定位配置文件,通过BeadDefinetionReader读入配置refresh方法实现
IOC容器启动方法是ConfigurableApplicationContext中定义的refresh方法,在AbstractApplicationContext中实现//准备阶段做的是:标记容器为active状态,以及检查当前的运行环境,比如使用log4j,还是jdklog等 prepareRefresh(); //创建beanfactory, 定位资源,载入,装配beandefinetion // Tell the subclass to refresh the internal bean factory. ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); //初始化beanfactory, 设置contex的classloader // Prepare the bean factory for use in this context. prepareBeanFactory(beanFactory); try { //在基本的初始化之后,对beanfactory做一些修改 // Allows post-processing of the bean factory in context subclasses. postProcessBeanFactory(beanFactory); //调用beanfactory后处理器 // Invoke factory processors registered as beans in the context. invokeBeanFactoryPostProcessors(beanFactory); //注册bean后处理器 // Register bean processors that intercept bean creation. registerBeanPostProcessors(beanFactory); //初始化消息资源,国际化 // Initialize message source for this context. initMessageSource(); // Initialize event multicaster for this context. initApplicationEventMulticaster(); //在实例化bean之前,做一些工作 // Initialize other special beans in specific context subclasses. onRefresh(); //注册 ApplicationListener监听器 // Check for listener beans and register them. registerListeners(); //实例化bean // Instantiate all remaining (non-lazy-init) singletons. finishBeanFactoryInitialization(beanFactory); //发布bean正常响应事件,初始化bean生命周期处理器 // Last step: publish corresponding event. finishRefresh(); }
BeanDefinetion
BeanDefinetion是定义bean的抽象向IOC容器注册BeanDefinetion
用HashMap维护BeanDefinetion, beanName作为key,BeanDefintion作为value如果有同名key,如果有配置overridebean,那就覆盖,没有就报错
populateBean方法完成bean的依赖注入
依赖注入
// Instantiate all remaining (non-lazy-init) singletons. //在refresh方法中初始化非懒加载的bean finishBeanFactoryInitialization(beanFactory);
相关文章推荐
- spring的启动过程就是创建ioc容器的过程
- Spring 源码学习(二) IOC容器启动过程
- Spring原理与源码分析系列(三)- Spring IoC容器启动过程分析(下)
- Spring原理与源码分析系列(二)- Spring IoC容器启动过程分析(上)
- 【Spring】IOC核心源码学习(二):容器初始化过程
- spring—容器启动载入bean过程
- Spring IoC容器构建过程分析(一)
- spring容器启动的加载过程(二)
- ioc容器启动的过程
- Spring容器启动过程
- 【Spring】IOC核心源码学习(二):容器初始化过程
- Spring-IOC+DI-启动过程
- spring容器启动的加载过程(一)
- spring源码学习之路---深度分析IOC容器初始化过程(四)
- 体验Spring的“IoC容器”对开发过程中的简化 推荐
- 转:Spring源码分析:IOC容器在web容器中的启动
- spring源码学习之路---深度分析IOC容器初始化过程(四)
- Spring源代码解析(二):IoC容器在Web容器中的启动
- Spring源代码分析之(二):IOC容器在web容器中的启动
- 【Java.Spring.MVC】Spring在Web容器中的启动过程