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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ibatis中isnotnull和isnotempty的区别_typedef int Status

    ibatis中isnotnull和isnotempty的区别_typedef int StatusisPropertyAvailable和isNotEmpty这个两个属性非常有用isPropertyAvailable:入参有这个属性isNotEmpty:入参的这个属性不为空入参一般是一个封装了数据的DTO如果希望一个属性无论为何值都符合条件则使用isPropertyAvailable如果希望一个属性只是不为空的时候才符合条件就用isNotEmptyupdate例子如下:…

    2022年10月7日
    6
  • mac idea 2022 激活码【2022免费激活】2022.01.27[通俗易懂]

    (mac idea 2022 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    272
  • 异常、线程

    异常、线程

    2021年5月19日
    112
  • hexdump -C_linux生成dump

    hexdump -C_linux生成dump描述:hexdump命令一般用来查看”二进制”文件的十六进制编码,从手册上查看,其查看的内容还要很多,诸如:ascii,decimal,hexadecimal,octal参数:hexdump[-bcCdovx][-eformat_string][-fformat_file][-nlength][-sskip]file示例:新增一个文本文件,在test文本中添加如下内容:…

    2026年2月6日
    4
  • Webstorm激活码 2021【2021.7最新】

    (Webstorm激活码 2021)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
    49
  • python中0xf_Python 0xff作者

    python中0xf_Python 0xff作者我有个错误:UnicodeDecodeError:’utf-8’codeccan’tdecodebyte0xffinposition:0,invalidstartbyte我找到了这个解决方案:^{pr2}$但是如果a)你不知道0xff在哪里和/或b)你需要解码一个file对象,你怎么使用它呢?正确的语法/格式是什么?在我正在解析一个目录,所以我试着一次检查一个文件。(注意:…

    2022年6月19日
    28

发表回复

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

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