zoukankan      html  css  js  c++  java
  • 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>  

     

  • 相关阅读:
    centos8 将SSSD配置为使用LDAP并要求TLS身份验证
    Centos8 搭建 kafka2.8 .net5 简单使用kafka
    .net core 3.1 ActionFilter 拦截器 偶然 OnActionExecuting 中HttpContext.Session.Id 为空字符串 的问题
    Springboot根据不同环境加载对应的配置
    VMware Workstation12 安装 Centos8.3
    .net core json配置文件小结
    springboot mybatisplus createtime和updatetime自动填充
    .net core autofac依赖注入简洁版
    .Net Core 使用 redis 存储 session
    .Net Core 接入 RocketMQ
  • 原文地址:https://www.cnblogs.com/wql025/p/4806832.html
Copyright © 2011-2022 走看看