Spring容器和springmvc容器的区别联系

Spring容器和springmvc容器的区别联系

Spring是根容器,SpringMVC是其子容器。子容器的创建依赖于父容器的创建。子容器(SpringMVC容器)可以访问父容器(Spring容器)的Bean,父容器(Spring容器)不能访问子容器(SpringMVC容器)的Bean。也就是说,当在SpringMVC容器中getBean时,如果在自己的容器中找不到对应的bean,则会去父容器中去找,这也解释了为什么由SpringMVC容器创建的Controller可以获取到Spring容器创建的Service组件的原因 

ContextLoaderListener中创建Spring容器主要用于整个Web应用程序需要共享的一些组件,比如DAO、数据库的ConnectionFactory等;而由DispatcherServlet创建的SpringMVC的容器主要用于和该Servlet相关的一些组件,比如Controller、ViewResovler等。在实际工程中,一个项目中会包括很多配置,根据不同的业务模块来划分,我们一般思路是:Spring根容器负责所有其他非controller的Bean的注册,而SpringMVC只负责controller相关的Bean的注册。

虽然说子容器可以访问父容器的bean,但是为什么在spring和springmvc整合的项目中,如果我们不把Controller注册在springmvc.xml中,而是在spring框架对应的配置文件applicationContext.xml中去设置一个全局扫描包(其中包括Controller的bean),这时,运行工程就会看到报404错误,显示找不到controller对象。这不就与“子容器可以访问父容器的内容”相矛盾了吗?其实这并不矛盾,而是因为RequestMappingHandleMapping在找controller时,默认是不会从父容器中找的。如果想要把controller的bean注册在父容器中,我们可以手动的配置它从父容器找。但是这样针对特定的HandlerMapping配置不好。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114752.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle 存储过程打印语句,oracle 存储过程语句总结[通俗易懂]

    oracle 存储过程打印语句,oracle 存储过程语句总结[通俗易懂]1、ExitWhen循环:createorreplaceprocedureproc_test_exit_whenisinumber;begini:=0;LOOPExitWhen(i>5);Dbms_Output.put_line(i);i:=i+1;ENDLOOP;endproc_test_exit_when;createorreplaceprocedureproc_te…

    2022年7月17日
    13
  • required属性的作用_required的作用

    required属性的作用_required的作用1,required属性-表示字段不能为空(注意:只有用户单击“提交”按钮提交表单的时候,浏览器才会执行验证。目前HTML5不支持指定验证的时间,而且验证消息的样式和内容各个浏览器不大一样,不能修

    2022年8月3日
    7
  • 操作系统的概念 (OS学习笔记)

    操作系统的概念 (OS学习笔记)操作系统的概念定义计算机系统的层次结构操作系统(OperatingSystem,os)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。操作系统的概念和目标从以下三大方面进行阐述:…

    2022年7月14日
    14
  • 人工智能猴子摘香蕉代码_猴子妈妈有14个香蕉

    人工智能猴子摘香蕉代码_猴子妈妈有14个香蕉只有简单的状态显示#include"iostream"usingnamespacestd;voidAT(charmonkeyplace,charboxplace){cout<<"AT(monkey,"<<monkeyplace<<")"<<endl;cout<&

    2022年9月26日
    0
  • 计算机发展史较为重大的事件,图说:15件计算机发展史中的重大事件(7)

    计算机发展史较为重大的事件,图说:15件计算机发展史中的重大事件(7)图说:15件计算机发展史中的重大事件(7)发布时间:2010-01-28来源:网易作者:网易责任编辑:my1971年,世界上首款个人计算机Kenbak-1产生。1971年,世界上首款个人计算机Kenbak-1产生。它由约翰·布兰肯巴克(JohnV.Blankenbaker)使用标准的中规模和小规模集成电路设计而成,生产商把它吹捧为一种易于使用的教育工具,enbak-1计算机当时的售价为…

    2022年10月10日
    0
  • 基于51单片机的毕业设计作品_毕业设计能拿公司项目吗

    基于51单片机的毕业设计作品_毕业设计能拿公司项目吗以下是学长亲手整理的C51单片机相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦!相对容易工作量达标题目新颖,含创新点httpshttpshttpshttpshttpshttps。……

    2022年10月3日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号