2024年5月29日发(作者:)

Spring在web中的配置方式

如果需要使用第三方MVC框架,则不能在文件中配置

ApplicationContext的启动。但是, ApplicationContext是Spring的容器,

负责管理所有的组件,从业务逻辑层组件,到持久层组件,都必须运行在Spring

容器中。因 此,必须在Web应用启动时,创建Spring的ApplicationContext

实例。事实上,Spring ApplictionContext作为IoC容器,总应该优先加载。

不管采用怎样的方法,Spring容器都应该在应用启动时,自动加载。为了让

Spring容器能自动加载,通常有两个做法:

1.让MVC框架负责创建ApplicationContext实例,MVC框架加载时自动创建

Spring容器。Struts就是采用这种机制与Spring整合。

2.采用load-on-startup Servlet实现。

根据Servlet2.3标准,所有的ServletContextListener都会比Servlet

优先加载——即使是load-on- startup Servlet。ApplicationContext实例是

Spring容器,负责管理应用中所有的组件,包括业务逻辑层组件和持久层组件。

因此,应该 尽可能早的创建Spring容器。

为此,应该优先采用listener创建ApplicationContext。只是,

ServletContextListener是从Servlet 2.3才出现的规范。如果使用了不支持

Servlet2.3以上的Web服务器,则只能放弃ServletContextListener,采用load

-on-startup Servlet策略。

Spring管理的组件相当多,如果将所有的组件部署在同一个配置文件里。

不仅会降低配置文件的可读性,增大修改配置文件时引入错误的可能性,也不符

合软 件工程“分而治之”的规则。通常推荐服务层对象,业务逻辑对象,DAO

对象都存在于互不相同的Context中,而表现层对象如Spring MVC控制器,则

被配置在表现层Context中。甚至将某个特定模块的组件部署在单独的Context

中。

实际的应用中,Spring的配置文件通常不只一个,而是按功能被分成多个。

好在,所有负责加载Spring容器的工具都可同时加载多个配置文件。

一. 采用ContextLoaderListener创建ApplicationContext

使用ContextLoaderListener创建ApplicationContext必须服务器支持

listener,下面这些服务器都是支持 Listener的,如果使用这些服务器,则可

以使用ContextLoaderListener创建ApplicationContext实例:

Tomcat 4.x+ 。

4.x+ 。

2.1.8+ 。

2.0.2+ 。

WebLogic 8.1 SP3。

Spring提供ServletContextListener的一个实现类ContextLoaderListener,

该类可以作为listener 使用,它会在创建时候自动查找WEB-INF/下的

文件,因此,如果只有一个配置文件,并且文件名为

,只需在文件中增加如下一段即可:

tLoaderList

ener

如果有多个配置文件需要载入,则考虑使用元素来确定配

置文件的文件名。 ContextLoaderListener加载时,会查找名为

contextConfigLocation的参数。因此,配置context- param时参数名字应该

是contextConfigLocation。

带多个配置文件的文件如下:

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"/dtd/web-app_2_">