此文几处有引用别人博客内容,如有侵权表示歉意!
2、spring mvc 也是一个容器,相比spring容器相对较小,是spring 容器的子容器,spring mvc 管理Contorller bean的容器。spring mvc使用WebApplicationContext 类,该类扩展自ApplicationContext.
3、spring 容器和spring mvc 容器之间的关系:
spring 在整体框架的核心概念中,容器思想是其核心思想。 在一个项目应用中容器的个数可以是多个,spring中可以包含多个容器,其中容器之间存在层级关系。其中spring容器和spring mvc 容器就是两个容器,spring容器作为根容器,spring mvc 容器作为子容器,并且子容器可以看到父容器的Bean,父容器中不能看到子容器中的Bean.这是spring自己定义的规则。
①在 spring 配置xml文件时 配置组件扫描包,该功能扫描包下所有的@Component注解,并且自动注入到容器中,@Service、@Controller、@Repository继承自@Component。spring配置主要是为了扫描@Service和@Repository注解。配置如下:
HandlerMapping是spring mvc中用来处理Request请求URL到具体Controller的,其自身也分成很多种类。
HandlerAdapter是spring mvc中用来处理具体请求映射到具体方法的,其自身也分很多中类
@RequestMapping 这个注解的主要目的就是对具体的Controller和方法进行注册,以方便HandlerMapping用来处理请求映射。但是@RequestMapping必须配合才能使用
在项目中为解决上诉容器之间的关系有如下三种方式:
- (推荐)在spring 配置扫描包指定@Service、@Repository所在包的路径,并在spring mvc 配置扫描包的指定@Controller所在包的路径,当然在spring配置扫描时也可以加入@Controller的扫描,但生成了此Bean会一直存储在spring容器中不进行使用,对资源照成浪费。总结:spring mvc容器中必须包含@Controller层级Bean,否则会请求会包404错误
- (不推荐)查看spring mvc 源码,在spring mvc 进行初始化时的执行:
方法isHandler()会判断当前的bean是否为Controller。
由于initHandlerMotheds()这个方法中handlerMethodsInitialized()主要是控制在哪个容器中获取Bean,默认是不包含父容器,我们可以修改spring mvc 配置文件,配置HandlerMapping的detectHandlerMethodsInAncestorContexts属性为true,(这里注意要根据不同的handlerMapping进行不同的配置),让其检查父容器中的Bean.
3.可以让spring 容器和spring mvc容器各司其职,spring 容器只负责非@Controller的扫描注册,spring mvc 容器只进行@Controller相关Bean 的扫描注册
到此这篇spring web和webmvc有什么区别(springmvc和spring区别)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/14640.html