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. Upgrading Directly from MySQL 5.0 to 5.7 using an ‘In Place’ Upgrade

    http://mysqlserverteam.com/upgrading-directly-from-mysql-5-0-to-5-7-using-an-in-place-upgrade/

  2. gdb参考手册

    http://www.sourceware.org/gdb/current/onlinedocs/gdb.html

  3. Mysql5.7全新的root密码规则

    http://blog.csdn.net/erlib/article/details/48003681

  4. linux下的系统调用函数到内核函数的追踪

    http://blog.csdn.net/maochengtao/article/details/23598433

  5. 关于Predicate<T>委托

    Predicate<T>委托在.NET类类库中经常出现,此委托的定义如下: public delegatebool Predicate<T>(T obj); 从其定义可以看到, ...

  6. webshell三剑客[aspxspy、phpspy、jspspy]

    ASPSPY:http://www.rootkit.net.cn/article.asp?id=132<已关闭> 下载:ASPXspy2 JSPSPY:http://www.forjj.c ...

  7. js 中三层引号问题

    方式1: '[{"Company": "XYZ","Description": "\"TEST\"" ...

  8. HashCode的秘密

    看String源码HashCode的计算方式: public int hashCode() {int h = hash;if (h == 0 && value.length > ...

  9. 自定义崩溃界面 CustomActivityOnCrash

    项目地址:https://github.com/Ereza/CustomActivityOnCrash The inner workings are based on ACRA's dialog re ...

  10. jQuery过滤选择器:not()方法介绍

    jQuery(':not(selector)') 在jQuery的早期版本中,:not()筛选器只支持简单的选择器,说明我们传入到:not这个filter中的selector可以任意复杂,比如:not ...