spring容器和SpringMVC容器的区别

  • Post author:
  • Post category:其他


说起spring容器和SpringMVC容器,很多刚接触spring框架的同志都有点懵,甚至是一头雾水,分不清楚两者的关系和区别,包括本人也是,因此还在网上找个不少资料。这俩容器呢虽然有必然的联系,但是他们的区别也是有的。下面我就简单描述下。

首先 springmvc和spring它俩都是容器,容器就是管理对象的地方,例如Tomcat,就是管理servlet对象的,而springMVC容器和spring容器,就是管理bean对象的地方,再说的直白点,springmvc就是管理controller对象的容器,spring就是管理service和dao的容器,这下你明白了吧。所以我们在springmvc的配置文件里配置的扫描路径就是controller的路径,而spring的配置文件里自然配的就是service和dao的路径

SpringMVC.xml文件所配置的路径:

<context:component-scan base-package="com.jd.controller"/>

applicationContext-service.xml文件所配置的路径:

<!--开启注解扫描 扫描dao层和service层-->
<context:component-scan base-package="com.gx.dao,com.jd.service">
    <context:include-filter expression="org.springframework.stereotype.Service" type="annotation"/>
    <context:include-filter expression="org.springframework.stereotype.Repository" type="annotation"/>
</context:component-scan>

其次, spring容器和springmvc容器的关系是父子容器的关系。spring容器是父容器,springmvc是子容器。在子容器里可以访问父容器里的对象,但是在父容器里不可以访问子容器的对象,说的通俗点就是,在controller里可以访问service对象,但是在service里不可以访问controller对象

所以这么看的话,所有的bean,都是被spring或者springmvc容器管理的,他们可以直接注入。然后springMVC的拦截器也是springmvc容器管理的,所以在springmvc的拦截器里,可以直接注入bean对象。

<!--SpringMVC 拦截器配置(可以多个)--> 
<mvc:interceptors> 
<!--配置拦截器--> 
<mvc:interceptor> 
<!--配置拦截的资源--> 
<mvc:mapping path="/**"/> 
<!--配置拦截器bean对象--> 
<bean class="com.jd.interceptor.MyInterceptor1"/> 
</mvc:interceptor> 
</mvc:interceptors>



版权声明:本文为shmily_Laowang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。