spring中ApplicationContext
1 spring 容器应用上下文:ApplicationContext 主要的实现类是 ClassPathXmlApplicationContext 和 FileSystemXmlApplicationContext, 前者默认是从类路径加载配置文件,后者默认从文件系统中加载配置文件。
对于 ClassPathXmlApplicationContext 来说,“com.smart.beans.xml” 等同于 “classpath:com.smart.beans.xml”
ApplicationContext 在初始化应用上下文时就实例化所有单实例的 Bean,
2 WebApplicationContext 是专门为 WEB 应用准备的,它允许从web 应用的根目录的路径中加载配置文件完成初始化工作。
从 WebApplicationContext 可以获得 ServletContext 的引用,整个 WEB 应用上下文对象将作为属性放到 ServletContext 容器中,以便于web 应用环境可以访问 spring 应用上下文。
3 WebApplicationContext 初始化,它的初始化方式和 ApplicationContext 初始化方式不同,因为 WebApplicationContext 初始化需要 ServletContext 实例,也就是说必须在拥有 WEB 容器的前提下
才能完成初始化工作。通过 web.xml 文件配置自启动的 Servlet 或定义 web 容器监听器(ServletContextListener),配置任一即可完成启动 Spring web 应用上下文的工作。
spring 提供了 ContextLoaderServlet 和 ContextLoaderListener。二者内部都实现了启动 WebApplicationContext 实例的逻辑,配置二选一即可。
ContextLoaderListener 是通过web 容器上下文参数 ContextConfigLocation 获取 spring 配置文件位置。
如果是在不支持容器监听器的低版本 web 容器中,则可以采用 ContextLoaderServlet 完成相同工作。
其中 ContextLoaderListener 或 ServletContextListener 配置好后即将 web 容器和 spring 容器进行了整合。
4 如果在配置文件中声明了工厂后处理器方法 BeanFactoryPostProcessor 的实现类,则应用上下文在装载配置文件之后、初始化 Bean 实例之前将调用这些 BeanFactoryPostProcessor
对配置信息进行加工处理。
spring 框架提供了多个工厂后处理器,如:PropertyPlaceholderConfigurer/CustomEditorConfigurer。如果在配置文件中定义了多个工厂后处理器,最好让他们实现
org.springframework.core.Ordered 接口,以便 spring 以确定的顺序调用它们。工厂后处理器是容器级的,仅在应用上下文初始化时调用一次,其目的是完成一些配置文件的加工处理工作。
5 在 ApplicationContext 中,只需在配置文件中通过 <bean> 定义工厂后处理器和 bean 后处理器。
6 spring 启动时读取应用程序提供的 Bean 配置信息,并在Spring 容器中生成一份相应的 bean 配置注册表,然后根据这张注册表实例化bean, 装配好 bean 之间的依赖关系。
bean 的配置信息是 bean 的元数据信息,包含以下四个方面
- bean 的实现类
- bean 的属性信息,例如:数据源的连接数、用户名、密码
- bean 的依赖关系
- bean 的行为配置,如生命周期范围、及生命周期各过程的回调函数
7 spring 容器、bean 配置信息、bean 实现类 及 应用程序的关系

8 spring 支持两种依赖注入方式,分别是属性依赖注入和构造函数依赖注入。
属性注入是通过 setXXX 方法注入 Bean 的属性值或依赖对象。
javaBean 关于属性的命名规范,属性变量名的前两个字母要么全部大写、要么全部小写。
9 级联属性配置,使用“.” 表示级联的属性
10 Properties 类型可以看做是 Map 类型的特例,Properties 属性的键和值必须是字符串。

11 Bean 作用域类型:singleton,prototype,request,session,globalSession。
如果要使用 request,session,globalSession 三个作用域,spring 容器需要获得 Web 容器的 HTTP 请求事件,需要配置 RequestContextListener 。
其中 request 范围的 bean ,则该 bean 在http 请求时创建,请求结束销毁。
spring中ApplicationContext的更多相关文章
- Spring中ApplicationContext对事件的支持
Spring中ApplicationContext对事件的支持 ApplicationContext具有发布事件的能力.这是因为该接口继承了ApplicationEventPublisher接口. ...
- web.xml中配置Spring中applicationContext.xml的方式
2011-11-08 16:29 web.xml中配置Spring中applicationContext.xml的方式 使用web.xml方式加载Spring时,获取Spring applicatio ...
- Spring中ApplicationContext加载机制和配置初始化
Spring中ApplicationContext加载机制. 加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet. ...
- Spring中ApplicationContext加载机制
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp33 加载器目前有两种选择:ContextLoaderListener和Co ...
- Spring中ApplicationContext和beanfactory区别---解析一
BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...
- 关于Spring中applicationContext.xml配置错误“org/springframework/transaction/interceptor/TransactionInterceptor”的问题解决
问题描述: 在配置spring的applicationContext.xml中的默认事务管理器的时候可能会出现这样的错误: Error occured processing XML 'org/spri ...
- Spring中ApplicationContext和beanfactory区别
BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...
- Spring 中 ApplicationContext 和 BeanFactory 的区别,以及 Spring bean 作用域
//从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...
- Spring中applicationContext.xml的bean里的id和name属性区别
转自:http://www.cnblogs.com/ztf2008/archive/2009/02/11/1388003.html <beans><bean id="per ...
- Spring中ApplicationContext和beanfactory区别---解析二
一.BeanFactory 和ApplicationContext Bean 工厂(com.springframework.beans.factory.BeanFactory)是Spring 框架最核 ...
随机推荐
- java什么时候声明static方法
1.经常用到的方法,可以声明为static,这样省去了每次new对象的内存空间,因为非static方法,需要new对象才能调用此方法.但因此也产生多线程访问线程安全问题 比如: 2.当一个方法或者变量 ...
- (windows)一台电脑上安装两个Mysql服务
原文:https://my.oschina.net/u/1472917/blog/410732 最近需要在一台电脑上安装两个Mysql服务,需求稍微有些奇怪,但确实很必要.本人原本为了本机测试Word ...
- Git本地仓库与Github远程仓库关联
如果你已经在本地创建了一个Git仓库,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,那就需要用到SSH Key,github拿到了你的公钥就会知道内容是你推送的. SSH Key ...
- Gulp插件使用技巧
目录: 插件的安装卸载 插件使用的基本流程 拆分任务 监听 默认任务 一.插件的安装卸载 安装: npm install gulp-less --save-dev 卸载 npm uninstall g ...
- .NET:为什么不能在子类或外部发布C#事件
背景 一个朋友问了一个问题:“为什么不能在子类或外部发布C#事件?”,我说我不知道,要看看生产的IL代码,下面我们看看. 测试 代码 using System; using System.Collec ...
- FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制
转载:http://blog.csdn.net/zm2714/article/details/7916440 给朋友做的一个项目中,涉及到上传视频.转换视频.自动截取已上传视频内容中的一帧做为缩略图片 ...
- UVA 10790 (13.08.06)
How Many Points of Intersection? We have two rows. There are a dots on the toprow andb dots on the ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- 在css加载完毕后执行后续代码
最近在写项目的framework,写个JQueryMessageBox的类,以使用jquery ui中的dialog()来显示消息框,为了使方法方便调用,便加入了自动判断页面是否加入了ui.js和ui ...
- Java Drp项目实战—— 环境搭建
概要 我们要開始一个关于Java项目的开发,那么我们就须要搭建一个关于Java开发的环境,那么搭建一个Java开发环境,都须要些什么东东,又有些什么注意事项呢. 过程 我先将我搭建Java环境的软件和 ...