Spring 中ApplicationContext使用 <02>

来源:互联网 发布:好玩的游戏 知乎 编辑:程序博客网 时间:2024/06/05 08:48

从下图可以很清晰的看出ApplicationContext 接口是BeanFactory 接口的子接口,处于Context 包下。


在ApplicationContext实例化后,同样通过getBean方法从ApplicationContext容器中获取装配好的Bean实例以供使用,ApplicationContext容器实例化后会自动对所有的单实例Bean进行实例化与依赖关系的装配。在<01>中有具体的体现,实例化ApplicationContext 容器后,直接执行Book无参构造器中的打印语句。

对于ApplicationContext,有主要三种加载配置文件的方式来进行实例化:

     1.使用classPathXmlApplicationContext,从类路径classpath中寻找xml配置文件,找到并装载完成ApplicationContext的实例化工作:

     ApplicationContext ctx=new ClassPathXmlApplicationContext("ApplicationContext.xml");

     2.使用FileSystemXmlApplicationContext,从指定的文件系统路径下寻找指定的xml配置文件,找到并装载完成ApplicationContext的实例化工作:

     ApplicationContext ctx=new  FileSystemXmlApplicationContext("ApplicationContext.xml");

     这种方式适用于采用Spring框架的独立应用程序。

     3.使用WebApplicationContextUtils类的getRequiredWebApplicationContext方法可在JSP与Servlet中取得IoC容器的引用,从web应用(/WEB-INF/applicationContext.xml)中寻找指定的xml配置文件,找到并装载完成ApplicationContext的实例化工作,这是为Web工程量身定制的,

     ServletContext servletContext = request.getSession().getServletContext();    
     ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);

     在加载配置文件时,如果未找到返回null。

     在上面三种方法中默认使用ClassPathXmlApplicationContext,Web项目的启动是由相应的Web服务器负责的,因此,在Web项目中ApplicationContext容器的实例化工作最好交给Web服务器来完成。

     一般来说,对于ApplicationContext,一种通过org.springframework.web.context.ContextLoaderListener的listener的方法进行配置,一种通过org.springframework.web.context.ContextLoaderServlet的 servlet方法进行配置。其中,ContextLoaderListener所初始化的容器,我们称之为Root WebApplicationContext。在配置过程中,ApplicationContext实例,如果需要指定配置文件位置,可通过context-param加以指定。servlet容器启动时加载组件的顺序来看,Listener组件是优先于Servlet组件的。基于Servlet方式的加载方案主要是为了兼容Servlet2.3及以下规范的Servlet容器。因此,基于Listener方式启动Spring容器是目前的主流选择。


















0 0
原创粉丝点击