spring整合struts时创建ApplicationContext的方法

原创 2007年10月04日 19:03:00

 

首先简单了解下ApplicationContext这个类,ApplicationContextSpring的容器,负责管理所有的组件,从业务逻辑层组件到持久层组件,都必须运行在Spring容器中。因此,必须在Web应用启动时,创建SpringApplicationContext实例。为了让Spring容器能自动加载,通常有以下一些做法:
 
一、采用ContextLoaderListener来创建ApplicationContext
Spring提供ServletContextListener的一个实现类ContextLoaderListener,该类可以作为listener使用,它会在创建时自动查找/WEB-INF/下的applicationContext.xml文件。因此,如果只有一个配置文件,并且文件名为applicationContext.xml,则只需要在web.xml文件中增加如下代码即可:
 
         <listener>
                   <listener-class>
                            org.springframework.web.context.ContextLoaderListener
                   </listener-class>
         </listener>
 
        
         如果有多个配置文件需要加载,则使用<context-param>元素来确定配置文件的文件名。由于ContextLoaderListener加载时,会查找名为contextConfigLocation的参数。因此,配置<context-param>时的参数名字应该为contextConfigLocation。如果加载多个配置文件,则在web.xml文件增加如下代码即可:
 
<context-param>
                   <!—配置多个文件时需要的参数-->
                   <param-name>contextConfigLocation</param-name>
         <!—需要加载的配置文件,可以有多个,用逗号或空格或分号隔开-->        
                  <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/service.xml</param-value>
         </context-param>
<listener>
                   <listener-class>
                            org.springframework.web.context.ContextLoaderListener
                   </listener-class>
         </listener>
 
二、采用load-on-startup Servlet来创建ApplicationContext
         Spring提供了一个特殊的Servlet类:ContextLoaderServlet。该Servlet在启动时,会自动查找/WEB-INF/下的applicationContext.xml文件。为了让ContextLoaderServlet随应用启动而启动,应将此Servlet配置成load-on-startupServletLoad-on-startup的值小一点比较合适,因为要保证ApplicationContext优先创建。如果只有一个配置文件,并且文件名为applicationContext.xml,则在web.xml文件中增加如下代码即可:
 
<servlet>
                   <servlet-name>context</servlet-name>
                   <servlet-class>
                            org.springframework.web.context.ContextLoaderServlet
                   </servlet-class>
                   <load-on-startup>1</load-on-startup>
         </servlet>
 
         Servlet用于提供后台服务,作为容器管理应用中的其他bean,不需要响应客户请求,因此无须配置servlet-mapping
         如果有多个配置文件需要加载,则使用<context-param>元素来确定配置文件的文件名。由于ContextLoaderListener加载时,会查找名为contextConfigLocation的参数。因此,配置<context-param>时的参数名字应该为contextConfigLocation。如果加载多个配置文件,则在web.xml文件增加如下代码即可:
 
<context-param>
                   <!—配置多个文件时需要的参数-->
                   <param-name>contextConfigLocation</param-name>
         <!—需要加载的配置文件,可以有多个,用逗号或空格或分号隔开-->        
                 <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/service.xml</param-value>
         </context-param>
         <servlet>
                   <servlet-name>context</servlet-name>
                   <servlet-class>
                            org.springframework.web.context.ContextLoaderServlet
                   </servlet-class>
                   <load-on-startup>1</load-on-startup>
         </servlet>
 
三、采用ContextLoaderPlugIn来创建ApplicationContext
         Spring提供了ContextLoaderPlugIn类,用于在启动时加载配置文件。ContextLoaderPlugIn默认加载的配置文件为servletName-servlet.xml,其中servletNameStrutsActionServlet对应的Servlet名。例如web.xml中进行如下定义:
 
         <servlet>
                   <servlet-name>action</servlet-name>
                   <servlet-class>
                            org.apache.struts.action.ActionServlet
                   </servlet-class>
</servlet>
 
         ContextLoaderPlugIn默认加载/WEB-INF/action-servlet.xml,将该文件作为Spring的配置文件。因此,如果Spring的配置文件只有一个,并且文件名为action-sevlet.xml,则只需在struts-config.xml配置文件中增加如下代码:
        
<plug-in className="org.springframework.
web.struts.ContextLoaderPlugIn"/>
 
如果有多个配置文件,则使用<set-property property="" value=""/>元素来加载多个配置文件,如果加载多个配置文件,则在struts-config.xml文件增加如下代码即可:
 
         <plug-in
                   className="org.springframework.web.struts.ContextLoaderPlugIn">
                   <set-property property="contextConfigLocation"
         <!—需要加载的配置文件,可以有多个,用逗号或空格或分号隔开-->
               value="/WEB-INF/action-servlet.xml,
/WEB-INF/applicationContext.xml" />
         </plug-in>
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ssh整合!Struts.xml、hibernate与spring整合的applicationContext.xml、web.xml文件的配置!

1、Struts.xml的配置 /success.jsp

Struts2的Action访问spring的ApplicationContext

一.在spring与struts整合过程中,如何引入并初始化ApplicationContext?? 有几种方式?? 1. 使用web.xml的方式引入并初始化ApplicationConte...

Struts的Action访问spring的ApplicationContext的问题

一.在spring与struts整合过程中,如何引入并初始化ApplicationContext?? 有几种方式?? 1. 使用web.xml的方式引入并初始化ApplicationCon...

spring获取webapplicationcontext,applicationcontext几种方法详解

spring获取webapplicationcontext,applicationcontext几种方法详解 方法一:在初始化时保存ApplicationContext对象 代码: Applica...

获取Spring上下文ApplicationContext的多种方法

1.实现监听器 2.在有request的请求,或者servlet中获取
  • lwphk
  • lwphk
  • 2014-09-28 14:06
  • 3823

Spring ApplicationContext 中的getBean方法的深入分析

Spring 中的ApplicationContext是如何取得Bean的

[java][spring]取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法

[spring]取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法 1、思路: 应用程序启动时使用ApplicationContext...

spring security3.24后applicationContext-security.xml中schema配置出错解决方法

我在以前的一个老项目中使用的spring securi

Spring中三种获取ApplicationContext的方法

package com.lc.ioc; import org.springframework.context.ApplicationContext; import org.springframewo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)