天天看点

spring-mvc启动重复加载问题

重复加载代表加载的事物被不同或同个任务加载多次。

那么根据重复加载的模块定位属于项目内部还是系统配置文件。

在这里定位的事配置文件。

spring MVC web.xml配置信息如下:

下面出现重复加载问题

集成Web环境的通用配置:context-param

<context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>  
            classpath:spring-*.xml  
        </param-value>  
    </context-param> 
           

框架将加载 servlet 初始化上下文

<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> 
           

spring 监听 Listener

<listener>
		<description>spring监听器</description>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
           

在配置文件spring-mvc.xml出现了重复加载,controller 重复加载也可能会导致配置的task schadule 任务重复执行。重复的原因可以查看此博客,原因是listener会加载context-param配置的所有全局的配置,servlet DispatcherServlet加载的web容器配置信息将多余。

解决办法:

修改spring-mvc.xml名称使得context-param与servlet加载不重复即可。

<param-value>/WEB-INF/classes/core-mvc.xml</param-value>