SpringMVC学习笔记——与Spring的关系

问题

  1. 需要进行 Spring 整合 SpringMVC 吗?
  2. 还是否需要再加入 Spring 的 IOC 容器吗?
  3. 是否需要再 web.xml 文件中配置启动 Spring IOC 容器 ContextLoaderListener 吗?

答案

  1. 需要:通常情况下,类似于数据源、事务、整合其它框架都是放在Spring 的配置文件中(而不是放在SpringMVC的配置文件中)。实际上放入Spring 配置文件对应的IOC容器中的还有 Service 和 Dao。
  2. 不需要:都放在 SpringMVC的 配置文件中。也可以分多个Spring 的配置文件,然后使用 import节点导入其他的配置文件。

整合问题

若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2次。
解决:
1. 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分。
2. 使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解 。SpringMVC只扫描ControllerControllerAdvice,Spring扫描剩下的。

关系

SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean.
Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!
下图来自佟刚老师的PPT:
SpringMVC学习笔记——与Spring的关系
IOC容器之间具有父子关系,即SpringMVC的IOC容器是子容器,可以引用父容器的bean,反之不行。
多个 Spring IOC 容器之间可以设置为父子关系,以实现良好的解耦。
SpringMVC WEB 层容器可作为 “业务层” Spring容器的子容器:即 WEB 层容器(SpringMVC)可以引用业务层容器(Spring)的 Bean,而业务层容器(Spring)却访问不到 WEB 层容器(SpringMVC)的 Bean。

总结

至此,学完了SpringMVC,如果让我直接写一个SpringMVC框架,可能还是不够清晰的知道如何去配置,当然还是去Copy配置文件,但是注解这块,可能看到就能想到,单纯去想可能有点困难,应该是还没应用于实践,熟练度不够,希望自己可以多看自己写的学习笔记,回顾知识点,2018/08/10,外面刚下了大雨。