项目中总是看到实力被初始化了2次, 应该是配置文件被执行了2次.
springmvc的配置和spring的配置是分开的.
spring配置:spring-common.xml
<!-- 自动扫描装配bean -->
<context:component-scan base-package="com.*.web">
<!-- 不扫描@controller -->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
springmvc的配置文件:spring-mvc.xml
<context:component-scan base-package="com.*.controller" >
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
省略了其他的配置.
然后web.xml中的配置
<!-- 配置SpringMVC start -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- 指定配置文件位置和名称,所以就不需要到web-inf目录 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 配置SpringMVC end -->
这里是明确了springmvc使用的配置文件的,
然后是spring的配置
<!-- 配置Spring监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-common.xml</param-value>
</context-param>
这里就必须要明确指定配置文件的名称.
之前之所以出现2次加载, 因为我在这里配置的是spring-*.xml那么就找出了所有的复合要求的配置文件, 导致2次加载.
网友评论