SpringMVC框架 第12章 Spring整合SpringMVC

第12章 Spring整合SpringMVC

12.1 Spring 与SpringMVC的整合问题:

 

   1)  需要进行 Spring 整合 SpringMVC 吗 ?

  2)  还是否需要再加入 Spring 的 IOC 容器 ?

  3)  是否需要在xml 文件中配置启动 Spring IOC 容器的 ContextLoaderListener ?

需要: 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件   中(而不是放在 SpringMVC 的配置文件中). 

  实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao.

不需要: 都放在 SpringMVC 的配置文件中. 也可以分多个 Spring 的配置文件, 然后使

       用 import 节点导入其他的配置文件

12.2 Spring整合SpringMVC_解决方案配置监听器

  1)  监听器配置

 

在HelloWorldHandler、UserService类中增加构造方法,启动服务器,查看构造器执行情况。

问题: 若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2 次.

解决:

使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分.

使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解

12.3 SpringIOC 容器和 SpringMVC IOC 容器的关系

SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean.

返回来呢 ? 反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean 

  1)  在 Spring MVC 配置文件中引用业务层的 Bean

  2)  多个 Spring IOC 容器之间可以设置为父子关系,以实现良好的解耦。

  3) 

即 WEB 层容器可以引用业务层容器的 Bean,而业务层容器却访问不到 WEB 层容器的 Bean

Spring MVC WEB 层容器可作为 “业务层” Spring 容器的子容器: