• ApplicationContext


    参考网址:

    http://baike.baidu.com/link?url=IPzNiVScxSd6ijhDeCKKEuywPqisDeTfyYSQIPRZqLxy6onkPddfzyvcWQC6_MABktnSo_Nr2k4Q9UJJfjD6DK

    http://blog.sina.com.cn/s/blog_5d6571df0100yaa5.html

    http://blog.csdn.net/sinodragon21/article/details/25842667

    ApplicationContext--实用的Bean工厂ApplicationContext简介

    如果说BeanFactory是Spring的心脏,那么Application就是完整的身躯。ApplicationContext就是由BeanFactory派生出来的。ApplicationContext的中文意思是“应用前后关系”,它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持,被推荐为Java EE应用之首选,可应用在Java APP与Java Web中。

    一、简单的用ApplicationContext做测试的话,获得Spring中定义的Bean实例(对象).可以用:

    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    RegisterDAO registerDAO = (RegisterDAO)ac.getBean("RegisterDAO");

    如果是两个以上:

    ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","dao.xml"});

    或者用通配符:

    ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:/*.xml");

    二、ApplicationContext的三个实现类

    在ApplicationContext接口的众多实现类中,有3个是我们经常用到的(见表1-1),并且使用这3个实现类也基本能满足我们Java EE应用开发中的绝大部分需求。
    表1-1 ApplicationContext接口的常用实现类介绍
    类 名 称
    功 能 描 述
    ClassPathXmlApplicationContext
    从类路径ClassPath中寻找指定的XML配置文件,找到并装载
    完成ApplicationContext的实例化工作。例如:
    //装载单个配置文件实例化ApplicationContext容器
    ApplicationContext cxt = new ClassPathXmlApplicationContext
    ("applicationContext.xml");
    //装载多个配置文件实例化ApplicationContext容器
    String[] configs = {"bean1.xml","bean2.xml","bean3.xml"};
    ApplicationContext cxt = new ClassPathXmlApplicationContext(configs);
    FileSystemXmlApplicationContext
    从指定的文件系统路径中寻找指定的XML配置文件,找到并装载
    完成ApplicationContext的实例化工作。例如:
    //装载单个配置文件实例化ApplicationContext容器
    ApplicationContext cxt = new FileSystemXMLApplicationContext
    ("beans.xml");
    //装载多个配置文件实例化ApplicationContext容器
    String[] configs = {"c:/beans1.xml","c:/beans2.xml"};
    ApplicationContext cxt = new FileSystemXmlApplicationContext(configs);
    XmlWebApplicationContext
    从Web应用中的寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。这是为Web工程量身定制的,使用WebApplicationContextUtils类的getRequiredWebApplicationContext方法可在JSP与Servlet中取得IoC容器的引用
    这些实现类的主要区别就是装载Spring配置文件实例化ApplicationContext容器的方式不同,在ApplicationContext实例化后,同样通过getBean方法从ApplicationContext容器中获取装配好的Bean实例以供使用。
    与BeanFactory不同的是,ApplicationContext容器实例化后会自动对所有的单实例Bean进行实例化与依赖关系的装配,使之处于待用状态。而BeanFactory容器实例化后并不会自动实例化Bean,只有当Bean被使用时BeanFactory容器才会对该Bean进行实例化与依赖关系的装配。
    在Java项目中通过ClassPathXmlApplicationContext类手动实例化ApplicationContext容器通常是不二之选。但对于Web项目就不行了,Web项目的启动是由相应的Web服务器负责的,因此,在Web项目中ApplicationContext容器的实例化工作最好交给Web服务器来完成。
     
    三、WebApplicationContext
    WebApplicationContext是专门为Web应用准备的,它允许从相对于web根目录的路径中加载配置文件完成初始化工作。

    WebApplicationContext扩展了ApplicationContext,WebApplicationContext定义了一个常量ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,在上下文启动时,我们可以直接通过下面的语句从web容器中获取WebApplicationContext:

    WebApplicationContext wac=(WebApplicationContext)servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

    四、ConfigurableWebApplicationContext

    ConfigurableWebApplicationContext扩展了WebApplicationContext,它允许通过配置的方式实例化WebApplicationContext,它定义了两个重要的方法:

    setServletContext(ServletContext servletContext):为Spring设置Web应用上下文,以便两者整合。

    setConfigLocation(String[] configLocations)设置Spring配置文件地址,一般情况下,配置文件地址是相对于Web根目录的地址,如/WEB-INF/techman-dao.xml等。也可以使用classpath:com/techman/context/techman-dao.xml等格式。

    五、Spring为使用WebApplicationContext的Web容器监听器:

    这里是web.xml启动WebApplicationContext的配置:

    <!-- 从类路径下加载Spring配置文件,classpath关键字特指类路径下加载 ,如果多个文件则使用逗号或空格隔开-->  
      <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath:applicationContext.xml,/WEB-INF/techman-dao.xml</param-value>    
      </context-param>  
        
      <!-- 负责启动Spring容器的监听器,它将引用上面的上下文参数获得Spring配置文件地址(如果没有指定上下文,默认的上下文为XmlWebApplicationContext) -->  
      <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
      </listener>  

     

  • 相关阅读:
    Reporting Services无法连接ORACLE,提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本
    ORA-12504:tns:监听程序在 CONNECT_DATA中未获得SERVICE_NAME
    指针
    将gridview 的数据导出EXCEL
    SAP 销售订单中采购标识无法修改
    Spring aop 实例(转)
    JVM — 性能调优
    Linux命令(持续更新)
    J.U.C|一文搞懂AQS(转)
    windows下监控和分析java进程
  • 原文地址:https://www.cnblogs.com/wql025/p/4806832.html
Copyright © 2020-2023  润新知