07 整合SSM的快速理解

发布时间:2024年01月16日

1.1 第一问:SSM整合需要几个IoC容器?

两个容器

本质上说,整合就是将三层架构和框架核心API组件交给SpringIoC容器管理!

一个容器可能就够了,但是我们常见的操作是创建两个IoC容器(web容器和root容器),组件分类管理!

这种做法有以下好处和目的:

  1. 分离关注点:通过初始化两个容器,可以将各个层次的关注点进行分离。这种分离使得各个层次的组件能够更好地聚焦于各自的责任和功能。
  2. 解耦合:各个层次组件分离装配不同的IoC容器,这样可以进行解耦。这种解耦合使得各个模块可以独立操作和测试,提高了代码的可维护性和可测试性。
  3. 灵活配置:通过使用两个容器,可以为每个容器提供各自的配置,以满足不同层次和组件的特定需求。每个配置文件也更加清晰和灵活。

在SpringBoot中 , 进一步简化为1个容器.

1.2 第二问:两个IoC容器分别对应哪些类型组件?

在这里插入图片描述
root是父 , web是子

1.3 第三问:两个IoC容器的注入(调用方向)关系?

  • 两个无关容器不可互相注入
  • 子容器(web)可向父容器(root)单向注入 . 在实际开发中就是如此 , 我们都是从Controller开始向下注入Service的.

1.4第四问:具体添加多少个配置类以及对应容器关系?

初期为了方便理解 , 三层架构每层对应一个配置类,分别指定两个容器加载即可!
在这里插入图片描述

1.5 第五问:IoC初始化方式和配置位置?

对于使用基于 web 的 Spring 配置的应用程序 , 一般采用配置类的方式 , 即用一个配置类初始化两个容器 :

public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

  //指定root容器对应的配置类
  //root容器的配置类
  @Override
  protected Class<?>[] getRootConfigClasses() {
    return new Class<?>[] { ServiceJavaConfig.class,MapperJavaConfig.class };
  }
  
  //指定web容器对应的配置类 webioc容器的配置类
  @Override
  protected Class<?>[] getServletConfigClasses() {
    return new Class<?>[] { WebJavaConfig.class };
  }
  
  //指定dispatcherServlet处理路径,通常为 / 
  @Override
  protected String[] getServletMappings() {
    return new String[] { "/" };
  }
}

图3

文章来源:https://blog.csdn.net/m0_46671240/article/details/135628635
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。