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 框架最核 ...
随机推荐
- android启动之SystemServer启动
SystemServer是Android系统的核心,APK应用中可以直接交互的大部分系统服务都在该进程中执行,常见的比方WindowManagerServer(Wms).ActivityManager ...
- Unity接入谷歌支付
文章理由 前段时间负责Unity接入Google内购功能,一开始研究别人的技术博客时发现,他们的文章都有些年头了,有些细节的地方已经不像n年前那样了,技术永远是需要更新的,而这篇就作为2016年末的最 ...
- 适配高分辨率的图片High DPI Images for Variable Pixel Densities
用最高的效率与性能提供最好的图片质量. 本文内容来至http://www.html5rocks.com/en/mobile/high-dpi/.是在这篇文章的翻译的基础上进行了总结和说明. 眼下面临的 ...
- pytest文档10-命令行传参
前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的"--html=report ...
- 利用tca时间聚簇分析方法分析fmri数据
一.利用ica进行fmri数据分解时,在得到相互独立的成分后,这些成分的后续处理,其实是有很多文章可以做的.比如,对这些成分进行排序和选择.如果能够提出某种方法,能够自动地制造特征,并将这些特征与分解 ...
- 关于Mantis变更日志(Changelog)和路线图(Roadmap)的说明
变更日志(Changelog):是已经修改好了问题的日志,需要给项目添加版本号,并且在添加/解决问题时都指定了相应的版本号,才会显示. 路线图(Roadmap):是计划在某个版本修改某些问题的日志,需 ...
- 《Haskell趣学指南》
<Haskell趣学指南> 基本信息 原书名:Learn You a Haskell for Great Good!: A Beginner's Guide 原出版社: No Starch ...
- javascript刷新父页面方法总结
用iframe.弹出子页面刷新父页面iframe <script language=JavaScript> parent.location.reload(); </script> ...
- C++ 11 - STL - 函数对象(Function Object) (上)
1. 定义 在STL中,可以把函数传递给算法,也可以把函数对象传递给算法. 那么,什么是函数对象呢? 我们来看下它的声明: class X { public: // define function c ...
- 搭建Android开发环境之旅
1.首先要下载相关的软件 1). JDK 6 以上 2). eclipse( Version 3.6.2 or higher ) 点击下载 3). SDK(android-sdk_r18-windo ...