`
sw1982
  • 浏览: 511264 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SPRING-MVC 启动重复加载两次映射

 
阅读更多

如下web.xml示例:

part1.用spring的配置加载contextConfigLocation

2.配置spring-mvc的contextConfigLocation

 

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:spring-*.xml
		</param-value>
	</context-param>
---------------------------------------------------------------------------
	<servlet>
		<servlet-name>spring-mvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!--查找controller位置的xml文件配置 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!--查找这里可以配置多个,用逗号分割或者用通配符*也就是第二行 -->
			<param-value>/WEB-INF/classes/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>

 

非常不幸,part1+2不能互相替代, 并且,如果两部分的xml重复命中,比如spring-*,就会导致springmvc的映射,scan重复加载两次。从启动日志和启动时长可以看到。 补充:重复加载还会导致配置的task,schadule任务重复执行!

 

所以,合理的做法是,把spring-mvc的定义单独摘出来定义在web容器启动的时候加载,名称也换成servlet-mvc.xml避免被spring重复加载, 而在spring的core xml定义中,不要出现mvc的东东

	<servlet>
		<servlet-name>spring-mvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!--查找controller位置的xml文件配置 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!--查找这里可以配置多个,用逗号分割或者用通配符*也就是第二行 -->
			<param-value>/WEB-INF/classes/servlet-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>

 

	<!-- (Annotation方式配置services)enable component scanning (beware that this 
		does not enable mapper scanning!) -->
	<context:component-scan base-package="com.xx.controller" />

	<!-- enable autowire -->
	<context:annotation-config />

    <!-- 默认的注解映射的支持 -->
    <mvc:annotation-driven />

	<!-- 拦截器 -->
	<mvc:interceptors>
	    <mvc:interceptor>
	    	<mvc:mapping path="/*/**"/>
	        <bean class="com.xx.interceptors.DebugLogInterceptor" />
	    </mvc:interceptor>
	    
	    <mvc:interceptor>
	    	<mvc:mapping path="/user/**"/>
	    	<mvc:mapping path="/group/**"/>
	    	<mvc:mapping path="/groupalbum/**"/>
	    	<mvc:mapping path="/message/**"/>
	    	<mvc:exclude-mapping path="/user/login"/>
	    	<mvc:exclude-mapping path="/user/c/mobile"/>
	    	<mvc:exclude-mapping path="/user/c/email"/>

	        <bean class="com.hoomic.interceptors.LoginInterceptor" />
	    </mvc:interceptor>
	    
	</mvc:interceptors>

 

分享到:
评论

相关推荐

    Struts2-hibernate--Spring-0100-page.zip_page

    分页在Web应用中十分常见,尤其是在数据量大的情况下,它可以提高用户体验,避免一次性加载大量数据导致页面响应慢或者内存压力过大。 1. **Struts2分页**: Struts2通过Action类来接收和处理用户的请求。在分页场景...

    Spring MVC + hibernate 集合

    Spring MVC 和 Hibernate 是两个在 Java Web 开发中广泛使用的框架。Spring MVC 是 Spring 框架的一部分,主要用于构建前端控制器,处理 HTTP 请求并分发到相应的业务逻辑。而 Hibernate 则是一个强大的 ORM(对象...

    spring mvc jpa

    Spring MVC 和 JPA 是两种广泛应用于Java开发的技术。Spring MVC 是Spring框架的一部分,是一个轻量级的、模型-视图-控制器(MVC)架构,用于构建Web应用程序。JPA(Java Persistence API)是Java平台上的一个标准,...

    spring mvc+mybatis分页

    在IT行业中,Spring MVC 和 MyBatis 是两个非常流行的开源框架,它们分别用于构建Web应用程序的模型-视图-控制器(MVC)架构和数据库操作。在这个特定的场景下,我们讨论的是如何在Spring MVC中结合MyBatis实现分页...

    SSM-Spring01

    SpringMVC 的工作流程可以分为两个阶段:启动服务器初始化过程和单次请求过程。 1. 启动服务器初始化过程: * 执行 ServletContainersInitConfig 类,初始化 web 容器 * 执行 createServletApplicationContext ...

    深入解析Spring架构与设计原理.pdf

    Spring Boot是基于Spring框架的快速开发工具,它简化了Spring应用程序的配置,提供了一键启动的便利性。 **七、Spring Security** Spring Security是Spring生态中的安全框架,提供身份验证、授权和会话管理等功能,...

    SSM-Spring02

    为了更好的使用 SpringMVC,我们将 SpringMVC 的使用过程总共分两个阶段来分析,分别是启动服务器初始化过程和单次请求过程。 启动服务器初始化过程 在启动服务器初始化过程中,会执行 ...

    Spring系列面试题129道(附答案解析)

    Spring MVC是Spring的一个模块,它提供了构建Web应用程序的MVC架构实现。它将Web层分成了模型(Model)、视图(View)和控制器(Controller),通过分离关注点来简化Web层的开发。 49、描述一下DispatcherServlet的...

    Spring 和Hibernate 整合笔记和jar包

    在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全面的后端应用框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而Hibernate则是一个强大的ORM(对象...

    spring4.1.6与hiber4.0整合源码

    在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在应用层和数据持久化层发挥着关键作用。Spring是一个全面的Java企业级应用开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)...

    mvc2上课课件

    MVC(Model-View-Controller)是一种软件设计模式,广泛应用于Web应用程序开发中,尤其在Java Web开发领域,MVC框架如Spring MVC、Struts等非常流行。MVC架构将应用程序分为三个核心部分:模型(Model)、视图(View...

    springmvc+maven+hibernate+ajax+分页

    【标题】"springmvc+maven+hibernate+ajax+分页" 描述了一个综合性的Web应用开发示例,它涵盖了多个关键的技术栈,包括Spring MVC作为MVC框架,Maven作为项目构建工具,Hibernate作为ORM(对象关系映射)框架,以及...

    ssm整合+分页简单框架

    **分页**是大型Web应用中必不可少的功能,能够提高用户体验,避免一次性加载过多数据导致页面响应慢或服务器压力过大。在SSM框架中,实现分页通常有两种方式: 1. **自定义分页**: 开发者需要编写SQL查询,手动计算...

    spring 中文开发文档 2.5 和3.0 包括 chm格式 和pdf

    在Web开发方面,Spring MVC的改进包括支持RESTful风格的URL映射、数据绑定和验证。此外,3.0版本还引入了Spring Expression Language(SpEL),这是一个强大的表达式语言,用于在运行时查询和操作对象图。 对于CHM...

    SSM-SpringMVC

    maven web 项目、补全目录结构、导入插件和坐标(tomcat、javax.servlet-api、spring-webmvc)、定义处理请求的功能类(UserController)、设置请求映射(请求路径)、将 springmvc 设定加载到 tomcat 容器中。 ...

    hibernate,spring资料

    2. **懒加载与级联操作**:通过懒加载机制,Hibernate可以优化数据的加载性能,只在真正需要时加载关联的数据。级联操作允许在一次操作中处理多个相关对象。 3. **缓存机制**:Hibernate支持二级缓存,提高数据读取...

    Spring+Hibernate+Struts工作原理

    例如,当获取一个实体对象时,与其关联的集合默认不会立即加载,而是在第一次访问时才加载,这就是延迟加载。 类之间的关系通过配置文件中的映射元素(如many-to-one、one-to-many、many-to-many)来定义,如一对一...

    Java框架面试题总结

    - 监听器在Web应用启动时加载配置文件,初始化Spring上下文。 - 容器加载Spring配置,创建Bean实例。 - 应用运行期间,Spring管理Bean的生命周期。 --- #### Hibernate篇 **1. Hibernate优缺点** - **优点**: ...

Global site tag (gtag.js) - Google Analytics