Spring容器与SpringMVC容器
1.疑问:为什么不用spring去管理所有类?
我们配置springMVC 中,为什么controller不直接交给spring 管理而要spring MVC容器单独分开来管理
2.Spring容器 与 SpringMVC关系
Spring容器与SpringMVC容器是父子关系,子容器可以访问父容器的对象,父容器不能访问子容器的类,如果我们在springMVC配置
文件中,直接扫描所有类,把service、dao、controller都交给SpringMVC去管理是可以的,但是假如用spring去管理
Contoller,它是访问不到这个类的,因为contoller是在springMVC容器中,假如在Spring配置直接扫描所有类包括
controller,而不配置springMVC的话,这样服务器发来的请求,将会出现404的问题,因为它找不到controller,spring
无法注入Controller
例如:
在applicationContext-service中配置:
<component-scan>
会扫描@Controller、@Service、@Repository、@Compnent
Springmvc.Xml中不扫描。
结论:springmvc。不能提供服务,因为springmvc子容器中没有controller对象。
3.为什么不直接在SpringMVC.xml中扫描所有类?
原则上我们是可以把service、dao
和controller都交给springMVC去管理,直接在SpringMVC配置文件中让它扫所有包就可以,但是出于未来扩展的考虑,spring
和springMVC分开配置,由 spring 去管理service,有利于以后扩展,即便以后加多个struct2也不用影响原有配置
------------------------------------------------------------------------------------------------------------------------------------
一、Spring容器和springmvc容器的关系如下图所示:
Spring和springmvc和作为两个独立的容器,会把扫描到的注解对象分别放到两个不同的容器中,
Springmvc容器是spring容器的一部分,他们访问对象的范围如下所示:
①:springmvc子容器可以访问spring父容器中的对象
②:spring父容器不能访问springmvc子容器中的对象
***在实际应用中的实例***
一般情况下,一个spring / springmvc / mybatis 组合的框架中,会存在以下几个配置文件:
以上部分内容转自:https://www.cnblogs.com/Prozhu/p/6709320.html