使用 ContextLoaderListener 创建 ApplicationContext 时,必须使服务器支持 listener,下面这些服务器都是支持Li stener 的,如果使用这些服务器,则可以使用ContextLoaderListener创建 ApplicationContext 实例:
Apache Tomcat4.x+ 。
Jetty 4.x+。
Resin2.1.8+。
Orion 2.0.2+。
BEAWebLogic8.1SP3。
Spring 提供 SeryletContextListener 的一个实现类 ContextLoaderListener,该类可以作为 listener 使用,它会在创建时自动查找 WEB-INF/下的 applicationContext.xrnl 文件。因此,如果只有一个配置文件,并且文件名为applicationContext.xrnl,则只需在 web.xrnl文件中增加如下代码即可:
<1istener> |
如果有多个配置文件需要载入,则考虑使用<context-para即元素来确定配置文件的文件名。由于ContextLoaderListener加载时,会查找名为contextConfigLocation的参数。因此,配置context-param时参数名字应该是contextConfigLocation。
带多个配置文件的web.xrnl文件如下:
<!--XML 文件的文件头--〉 |
如果没有 contextConfigLocation指定配置文件,则 Spring 自动查找 applicationContext.xrnl 配置文件。如果有contextConfigLocation,则利用该参数确定的配置文件。该参数指定的一个字符串,Spring 的 ContextLoaderListener 负责将该字符串分解成多个配置文件,逗号","、空格""及分号";"都可作为字符串的分割符。
如果既没有applicationContext.xrnl 文件,也没有使用contextConfigLocation参数确定配置文件,或者contextConfigLocation确定的配置文件不存在。都将导致Spring无法加载配置文件或无法正常创建 ApplicationContext 实例。
Spring 根据 bean 定义创建 WebApplicationContext 对象,并将其保存在 Web 应用的ServletContext 中。大部分情况下,应用中的bean 无须感受到 ApplicationContext的存在,只要利用 ApplicationContext的 JoC 即可。
如果需要在应用中获取ApplicationContext实例,则可以通过如下方法获取:
WebApplicationContextctx: |
下面是采用 Servlet获取 ApplicationContext 的完整源代码:
public class SpringTestServlet extends HttpServlet |
可在程序里手动获取ApplicationContext对象,然后直接输出到Servlet 的响应。将看到 ApplicationContext加载了 web.xml文件中指定的两个配置文件。