0


71.Spring和SpringMVC为什么需要父子容器?

71.Spring和SpringMVC为什么需要父子容器?

就功能性来说不用子父容器也可以完成(参考:SpringBoot就没用子父容器)

  • 1、所以父子容器的主要作用应该是划分框架边界。有点单一职责的味道。service、dao层我们一般使用spring框架 来管理、controller层交给springmvc管理
  • 2、规范整体架构 使 父容器service无法访问子容器controller、子容器controller可以访问父容器 service
  • 3、方便子容器的切换。如果现在我们想把web层从spring mvc替换成struts,那么只需要将spring­mvc.xml替换成 Struts的配置文件struts.xml即可,而spring­-core.xml不需要改变
  • 4、为了节省重复bean创建

知识延伸

spring容器和springmvc容器,以及web容器的关系

  • springmvc和spring它俩都是容器,容器就是管理对象的地方,例如Tomcat,就是管理servlet对象的,而springMVC容器和spring容器,就是管理bean对象的地方,再说的直白点,springmvc就是管理controller对象的容器,spring就是管理service和dao的容器,这下你明白了吧。所以我们在springmvc的配置文件里配置的扫描路径就是controller的路径,而spring的配置文件里自然配的就是service和dao的路径
  • 在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器间有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,其实就是两个容器:Spring是根容器,SpringMVC是其子容器。在上文中,我们提到,SpringMVC容器可以访问Spring容器中的Bean,Spring容器不能访问SpringMVC容器的Bean。但是,若开发者对Spring容器和SpringMVC容器之间的关系了解不够深入,常常会因配置失当而导致同时配置Spring和SpringMVC时出现一些奇怪的异常,比如Controller的方法无法拦截、Bean被多次加载等问题。

在实际工程中,一个项目中会包括很多配置,根据不同的业务模块来划分,我们一般思路是各负其责,明确边界,即:Spring根容器负责所有其他非controller的Bean的注册,而SpringMVC只负责controller相关的Bean的注册

标签: spring java 后端

本文转载自: https://blog.csdn.net/weixin_43860634/article/details/136052341
版权归原作者 飞翔的佩奇 所有, 如有侵权,请联系我们删除。

“71.Spring和SpringMVC为什么需要父子容器?”的评论:

还没有评论