天天看點

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>