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开发环境:安装JDK
一:下载安装JDK,java7相对稳定成熟 (下载地址>>) 必须选择同意,然后根据自己的系统版本选择对应的jdk 如: 装完jdk就会提示安装jre,一般放同一目录下 配置系统变量: w ...
- jQuery:validate表单验证基本使用
jquery.validate是jquery的一个验证框架,可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法! 这里先从介绍简单的使用方法:jquery.validate.js下载地址 1. ...
- VisualStudio:WEB 性能测试和负载测试 入门
背景 一直做的是中小企业应用,很少关注性能和负载这里,进来准备看一本关于并发编程的图书,为了量化的测试 WEB 环境的性能和负载,特意玩了一下 VS 提供的测试项目. 新的测试项目 新建项目 性能测试 ...
- mysql -- 用索引应避免空值
由于数据库的复杂性,以讹传讹的空间非常大,快赶上中医养生了.避免使用 NULL 的理由,在高性能MySQL里有提到一段.建议大家多读些书,少看网上的奇技淫巧.特意把书翻出来摘录了下以供参考: 要尽量避 ...
- Microsoft Visual C++ 6.0预处理器参考手册
返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言........................................................ ...
- iOS:使用Github托管自己本地的项目代码方式二(客户端方式: Github Desktop)
管理代码的地方主要有:Github(国外流行).CocoaChina.Cocoa4App.中国开源社区.CSDN.博客园.简书等等..... 前面已经介绍了如何使用命令行和Xcode将本地代码上传到G ...
- 原生对话框【Dialog】AlertDialog和.Builder
使用大全 public class MainActivity extends ListActivity ); pd.setProgress(i);//改变当前进 ...
- C#中的yield
一.C#中yield关键字用于遍历循环中,yield语句的两种形式 yield return用于返回IEnumerable<T>, yield break用于终止循环遍历. 二.yield ...
- Android -- Android JUint 与 Sqlite
创建一个数据库 public PersonSQLit ...
- [Webpack] Create Separate webpack Configs for Development and Production with webpack-merge
The development and production modes in webpack optimize the output in different ways. In developmen ...