Spring容器内部工作机制 
Spring的AbstractApplicationContext是ApplicationContext抽象实现类,该抽象类的refresh()方法定义了Spring容器在加载配置文件后的各项处理过程。 
refresh()内部定义的执行逻辑 
//初始化BeanFactory:根据配置文件实例化BeanFactory,getBeanFactory()方法由具体子类实现。 
//Spring将配置文件的信息载入到容器的Bean(BeanDefinitionRegistry)定义注册表中,当此时Bean还为未初始化。 
ConfigurableListableBeanFactory beanFactory = getBeanFactory();

//调用工厂后处理器:根据反射机制从BeanDefinitionRegistry中找出所有BeanFactoryPostProcessor类型的Bean,并调用其postProcessBeanFactory()接口方法 
invokeBeanFactoryPostProcessors();

//注册Bean后处理器:根据反射机制从BeanDefinitionRegistry中找出所有BeanPostProcessor类型的Bean 
//并将它们注册到容器Bean后处理器的注册表中 
registerBeanPostProcessors();

//初始化消息源:初始化容器的国际化信息资源 
initMessageSource();

//初始化应用上下文事件广播器 
initApplicationEventMulticaster();

//初始化其他特殊的Bean:这是一个钩子方法,子类可以借助这个方法执行一些特殊的操作 
onRefresh();

//注册事件监听器 
registerListener();

//初始化所有单实例的Bean,使用懒初始化模式的Bean除外:初始化Bean后,将它们放入Spring容器的缓存中 
finishBeanFactoryInitialization(bean Factory):

//发布上下文刷新事件:创建上下文刷新事件,事件广播器负责将这些事件广播到每个注册的事件监听器中 
finishRefresh();

Spring处理器的更多相关文章

  1. 170324、Spring 处理器和Resource

    1.Spring 框架允许开发者使用两种后处理器扩展 IoC 容器,这两种后处理器扩展 IoC 容器,这两种后处理器可以后处理 IoC 容器本身,或对容器中所有的 Bean 进行后处理.IoC 容器还 ...

  2. Spring 配置文件applicationContext.xml

    Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸". Spring配置文件是一个或多个标准的XML文档,applica ...

  3. 一份spring配置文件及其详解

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/axu20/archive/2009/10/14/4668188.aspx 1.基本配置:<?xml versio ...

  4. Spring 配置文件详解 http://www.blogjava.net/hellxoul/archive/2011/11/19/364324.html

    1.基本配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http: ...

  5. JAVA spring配置文件总结

    首先来看一个标准的Spring配置文件 applicationContext.xml <?xml version="1.0" encoding="UTF-8&quo ...

  6. Spring源码阅读(四)

    我们知道,在spring bean生命周期中,我们可以在不同阶段执行处理器或者方法,比如init-method,destroy方法,BeanPostProcessor接口等.那么这些处理器或方法的执行 ...

  7. [JavaEE]Spring配置文件总结

    首先来看一个标准的Spring配置文件 applicationContext.xml <?xml version="1.0" encoding="UTF-8&quo ...

  8. 学习笔记_J2EE_SSM_01_spring+springMVC+Mybatis整合_XML配置示例

    spring+springMVC+Mybatis整合_XML配置示例 1.概述 spring+springMVC+Mybatis整合  XML配置方式 1.1 测试环境说明 名称 版本 备注 操作系统 ...

  9. 【SpringBoot】SpringBoot 配置这一篇文章就够了

    SpringBoot 配置文件 一.配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的: application.properties application.yml 配置文件的 ...

随机推荐

  1. openCV1

    openCV是一个提供有C++ , android , python的开源图像处理的类库 中文论坛的网址是http://www.opencv.org.cn/forum.php?mod=forumdis ...

  2. linux开关端口问题

    linux开关端口问题: 我们知道一些常用的端口,比如mysql的端口为3306,sql的端口为:1433,以及tomcat的端口为 8008等等一样! 当这些端口在linux下是没有开启时,我们是无 ...

  3. c++表达式的一些小小的注意事项

    3+12>>1 = 7; 12>>1+3 =0; 3+(12>>1)=9;

  4. stackview

    Stack View会被当成Container View.所以它是一个不会被渲染的UIView子类.它不像其他UIView子类一样,会被渲染到屏幕上.这也意味着设置其backgroundColor属性 ...

  5. /etc/crontab文件和crontab -e命令区别

    /etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see man 4 crontabs # Example of job definition ...

  6. SQL语句技巧(上个样式太差了)

      以下并非本人整理,但是看后感觉相当不错,特此分享. 1.应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分 ...

  7. 引用CSS文件到html网页里方法

        引用CSS文件到Html方法-css引入,css引用 使用不同的方法来引用css样式表,最终到达的效果相同,但是使用不同方法应用的css文件将影响到SEO及网页打开速度效率. html引用cs ...

  8. display:inline-block;如何取消标签之间的距离

    <div style="font-size:0px"> <div style=" display:inline-block; zoom:1;*displ ...

  9. 使用OpenGL ES绘制3D图形

    如果应用定义的顶点不在同一个平面上,并且使用三角形把合适的顶点连接起来,就可以绘制出3D图形了. 使用OpenGL  ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的 ...

  10. Query的选择器中的通配符[id^='code']或[name^='code']

        1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code'] ...