SpringMvc中bean被加載兩遍

原因是在web.xml中配置了spring的dispatherServlet又配置了spring容器的listener但是隻配置了一個參數

  1. <context-param>  

  2.         <param-name>contextConfigLocation</param-name>  

  3.         <param-value>  

  4.             classpath:spring-*.xml  

  5.         </param-value>  

  6.     </context-param>  

結果就是兩部分都會去加載spring的配置文件,所以在配置文件中配置的bean都會被加載兩邊,一次是初始化spring容器,一次是springmvc,正確的做法是將兩部分分離開來,controller層以及之前的部分由springmvc來加載,service層以及往後的dao等部分有spring容器來管理,即面向接口的部分由spring容器來加載,其他部分有springmvc來加載;

配置如下:

  1. <servlet>  

  2.         <servlet-name>spring-mvc</servlet-name>  

  3.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

  4.         <!--查找controller位置的xml文件配置 -->  

  5.         <init-param>  

  6.             <param-name>contextConfigLocation</param-name>  

  7.             <!--查找這裏可以配置多個,用逗號分割或者用通配符*也就是第二行 -->  

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

  9.         </init-param>  

  10.         <load-on-startup>1</load-on-startup>  

  11.         <async-supported>true</async-supported>  

  12.     </servlet>  

  13.     <context-param>  

  14.         <param-name>contextConfigLocation</param-name>  

  15.         <param-value>  

  16.             classpath:application-*.xml  

  17.         </param-value>  

  18.     </context-param>  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章