当前位置: 首页 > news >正文

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的注册

http://www.lryc.cn/news/294795.html

相关文章:

  • 标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程
  • 通过 ChatGPT 的 Function Call 查询数据库
  • LLM(大语言模型)——大模型简介
  • SQLserver2008 r2 下载安装配置、使用、新建登录用户及通过Navicat远程连接
  • linux code server 网页版的vscode
  • 【leetcode100-086到090】【动态规划】一维五题合集2
  • 关闭Ubuntu 默认开启的自动安全更新
  • python统计文本 2022年9月青少年电子学会等级考试 中小学生python编程等级考试二级真题答案解析
  • HomeAssistant系统添加HACS插件商店与远程控制家中智能家居
  • 计算huggingface模型占用硬盘空间的实战代码
  • Leetcode 3031. Minimum Time to Revert Word to Initial State II
  • 游戏后端如何实现服务器之间的负载均衡?
  • es6中标签模板
  • 二级C语言笔试1
  • Spring MVC跨域设置
  • 基于Python的HTTP隧道安全性分析:魔法背后的锁与钥匙
  • linux的stat/lstat函数和目录遍历函数使用
  • HTTP MIME 类型
  • Mac OS中创建适合网络备份的加密镜像文件:详细步骤与参数选择
  • Java TreeSet 添加自定义对象 必须指定排序规则
  • vue - 指令(一)
  • 正则表达式 regex
  • iOS自动打包如何用Python实现
  • springboot161基于springboot的公交线路查询系统
  • 大白话介绍循环神经网络
  • GEE——如何利用降水数据绘制指定区域长时间序列的降水分布图和提取每个月(逐月)的降水平均数据
  • 【软件使用】【edge】如何让edge的某个网页作为应用安装
  • 四大最受欢迎游泳耳机品牌,全球最好的游泳耳机排行榜测评
  • Linux实验记录:使用BIND提供域名解析服务
  • 基于单片机的智能寻光小车设计