请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于Spring和SpringMVC的配置

之前再做SpringMVC项目时,只需要一个spring配置文件,交给dispatcherServlet,让他负责IOC容器的初始化就好了,因为SpringMVC本身自带Spring的bean context aop core  4个核心包,SpringMVC本身就相当于Spring了,他也有自己的IOC容器

但是本项目中在spring ioc容器初始化的时候,好像是用到了两个配置文件,一个是spring的,由监听器负责整合web容器和spring容器:

https://img1.sycdn.imooc.com//szimg/5c9a1b620001eb2712540252.jpg


另外一个就是SpringMVC的,由dispatcherServlet负责整合:

https://img1.sycdn.imooc.com//szimg/5c9a1b9500014fcb09860372.jpg


这样一来是会产生一个spring的ioc容器,还是两个ioc容器呢?

为什么不直接使用一个配置文件,非要搞成两个?

正在回答 回答被采纳积分+3

2回答

提问者 楚楚提 2019-03-27 11:47:24

在网上搜了一下,发现是有两个容器,spring的容器是springMVC的父容器.

但是我自己平时编程的时候发现一个问题,就是@controller对于spring  和  springMVC是有不同意义的,对于前者类似于@repository或者@Service,主要是表达这个bean和什么功能相关.

但是对于SpringMVC @Controller注释意味着处理请求的handler,这是很关键的,不能用其他注解替换的

而本项目中两个容器扫描包时都是com.mmall包,那么对于其中的@controller注解,他们又是怎么处理的,以及怎么区分的呢?????

0 回复 有任何疑惑可以回复我~
  • 其实spring有一个配置是可以设置成不扫描哪些注解或者只扫描哪些注解,如果扫描的包都是一样的,有可能所有的Bean都是从Spring mvc容器里面获取的。
    回复 有任何疑惑可以回复我~ 2019-03-27 16:08:50
  • 提问者 楚楚提 回复 geelylucky #2
    网上有个帖子,分享给你,早上刚看到的:
    https://www.cnblogs.com/moxiaotao/p/9246668.html
    回复 有任何疑惑可以回复我~ 2019-03-27 16:12:39
  • geelylucky 回复 提问者 楚楚提 #3
    嗯嗯,这个我是知道的。老师这个两个都扫描了包,应该就是Spring mvc包含了所有的bean,其实spring也包含了所有的bean,但是一直没有使用到spring,也就是父容器
    回复 有任何疑惑可以回复我~ 2019-03-27 22:10:02
geelylucky 2019-03-27 00:34:03

亲爱的同学,你好,我是geely老师的助教。

是两个IOC容器,是可以只用spring mvc的,用两个是为了做到单一原则,spring管理业务逻辑层,spring mvc负责对外的接口。

0 回复 有任何疑惑可以回复我~
  • 提问者 楚楚提 #1
    关键是他们扫描的包是一样的,岂不是会生成重复的bean?
    回复 有任何疑惑可以回复我~ 2019-03-27 08:11:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信