spring中自动注入的对象被初始化两次的问题
首先上web.xml文件:
<!-- 读取spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:conf/spring-mvc.xml;classpath:conf/spring-mybatis.xml;
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- springMVC核心配置 -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
原因分析
- spring添加配置DispatcherServlet的时候引入了一个spring的加载配置文件,里面进行了配置内容,扫描包。
- 在配置ContextLoaderListener的时候同样引入了这一配置,导致会扫描两次,而出现问题。
解决办法
在web.xml中去掉已经指定过的配置文件。