Spring的applicationContext和spring-mvc.xml的区别

applicationcontext.xml一般里面是配置dataSource以及相关的IOC容器中存放的相关bean。而spring-mvc.xml一般配置一些与web相关的东西。两个东西没什么关联。

在配置<context:component-scan>的时候,最好分开配置。在spring-mvc中一般只扫描controller层,配置为

<context:component-scan base-package="com.pro.**.controller" use-default-filters="false">
   <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

 在其他spring配置中扫描其他的包,注意不要包含controller。

另外,不要配置了<context:annotation-config>又配置<context:component-scan>。<context:component-scan>在实现的时候包含了<context:annotation-config>。在实际编程过程中,只需要在xml配置文件中配置<context:annotation-config>就可以了。

applicationContext是mvc context的父容器,mvc context可以引用applicationContext的bean,而applicationContext无法引用到mvc的bean,如果你这样配,有些东西如果applicationContext需要,它就找不到了,所以还不如全放到applicationContext中。

spring查找bean,会现在当前context中查找,如果没有满足的,再到父容器查找, 

applicationContext是在web.xml中配置的ContentLoader监听器启动的,当xml启动时加载,并按照一个约定的key放在java的ServletContext中,然后mvc 的servlet初始化时,先从ServletContext中按照约定的key取出来,以它为父容器,去创建mvc的容器。 

再说,两个不同的spring context,是不会有冲突的,是可以存在相同的bean定义的,只不过优先查找当前context,不存在才往上找。

猜你喜欢

转载自hq82001.iteye.com/blog/2315829