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的更多相关文章

  1. Spring中ApplicationContext对事件的支持

    Spring中ApplicationContext对事件的支持   ApplicationContext具有发布事件的能力.这是因为该接口继承了ApplicationEventPublisher接口. ...

  2. web.xml中配置Spring中applicationContext.xml的方式

    2011-11-08 16:29 web.xml中配置Spring中applicationContext.xml的方式 使用web.xml方式加载Spring时,获取Spring applicatio ...

  3. Spring中ApplicationContext加载机制和配置初始化

    Spring中ApplicationContext加载机制.        加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet.        ...

  4. Spring中ApplicationContext加载机制

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp33 加载器目前有两种选择:ContextLoaderListener和Co ...

  5. Spring中ApplicationContext和beanfactory区别---解析一

    BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...

  6. 关于Spring中applicationContext.xml配置错误“org/springframework/transaction/interceptor/TransactionInterceptor”的问题解决

    问题描述: 在配置spring的applicationContext.xml中的默认事务管理器的时候可能会出现这样的错误: Error occured processing XML 'org/spri ...

  7. Spring中ApplicationContext和beanfactory区别

    BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...

  8. Spring 中 ApplicationContext 和 BeanFactory 的区别,以及 Spring bean 作用域

    //从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...

  9. Spring中applicationContext.xml的bean里的id和name属性区别

    转自:http://www.cnblogs.com/ztf2008/archive/2009/02/11/1388003.html <beans><bean id="per ...

  10. Spring中ApplicationContext和beanfactory区别---解析二

    一.BeanFactory 和ApplicationContext Bean 工厂(com.springframework.beans.factory.BeanFactory)是Spring 框架最核 ...

随机推荐

  1. GridView 内容自动换行 简单记录

    $("#GridView1 tr td:last-child").each(function () { var width = $(document).width() - 700. ...

  2. Mysql配置文件my.ini详解

    以下是Mysql数据库服务器配置文件my.ini的详细配置.应用场合是InnoDB引擎,2核CPU, 32位SUSE. [client] #password = your_password port  ...

  3. fdopen()和fileno()函数

    转:http://book.2cto.com/201212/11763.html 文件描述字函数是流函数的初等函数,每一个流都与一个描述字相连.给定一个打开的文件描述字,可以用fdopen()函数为它 ...

  4. ice地址

    http://www.zeroc.com/download/eclipse

  5. JQuery与JavaScript onload的区别

    1.window.onload 不能有多个,后面的功能会覆盖前面.而jQuery(document).ready()可以存在多个. 2.window.onload 在页面所有元素(包括图片,引用文件) ...

  6. 运行Hadoop的示例程序WordCount-Running Hadoop Example

      In the last post we've installed Hadoop 2.2.0 on Ubuntu. Now we'll see how to launch an example ma ...

  7. 几个有用的javascript(日期比较,数字验证,数字和汉字长度计算)

    1:日期大Js代码 //人员失效职位日期是否小于组织失效日期 function perDateInvalidate(){ var flag = true; //组织失效日期 var orgDate = ...

  8. 努力让java学习系统化

    这段日子接手一社区系统的开发.开发过程中感觉到自己接触到的和所作的多是业务逻辑性开发,对java开发到如今还没有一个清晰明白的路线,我越来越感觉到问题的重要性. 问题一:代码仅仅注重了功能实现,对代码 ...

  9. 【问题】VH

      [问题]: CSS中使用了VH,在iOS中展示正常,但是在安卓的个别浏览器中,当输入框弹出时,使用VH的DIV的高度会发生变化. [原因]: 在安卓端浏览器虚拟键盘弹出时,导致视口高度改变,以至于 ...

  10. Unity5.1 新的网络引擎UNET(十五) Networking 引用--下

     孙广东 2015.7.21 本节提供了与网络系统一起使用的组件的具体信息. 10.Network Proximity Checker Suggest a change Success! Than ...