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/下的
文件,因此,如果只有一个配置文件,并且文件名为
,只需在文件中增加如下一段即可:
ener
如果有多个配置文件需要载入,则考虑使用
置文件的文件名。 ContextLoaderListener加载时,会查找名为
contextConfigLocation的参数。因此,配置context- param时参数名字应该
是contextConfigLocation。
带多个配置文件的文件如下:
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"/dtd/web-app_2_">


发布评论