• (一) Mybatis 源码解析之源码概述


     Mybatis 源码解析之源码概述

    源码下载 : https://github.com/MyBatis/MyBatis-3

    源码架构分析 :

      源码结构图:

      

      基础支撑层:技术组件专注于底层技术实现,通用性较强无业务含义;
      核心处理层:业务组件专注 MyBatis 的业务流程实现,依赖于基础支撑层;
      接口层:MyBatis 对外提供的访问接口,面向 SqlSession 编程;

      源码脑图结构: https://www.processon.com/mindmap/5f317132f346fb718468fb3c

         源码结构图 :(建议和脑图一起看,了解每个包存在的意义

             

      

    mybatis源码分析的意义:

      我们可以清晰的看到,mybatis的源码结构十分清晰,对外以暴露接口的形式,这里运用了一个设计模式 - 外观模式 ,此设计模式的优点十分明显:

      使复杂子系统的接口变的简单可用,减少了客户端对子系统的依赖,达到了解耦的效果;遵循了 OO 原则中的迪米特法则,对内封装具体细节,对外只暴露必要的接口。

    mybatis源码思考:

        为什么mybatis需要将整个结构分为3层?为什么要这么分?依据是什么?这样分的好处是什么?

    1. 代码和系统的可维护性更高。系统分层之后,每个层次都有自己的定位,每个层次内部的组件都有自己的分工,系统就会变得很清晰,维护起来非常明确;
    2. 方便开发团队分工和开发效率的提升,因为庞大的框架一个人的力量有限的,合理的分层分模块,可以使团队的协作更加默契,也是我们在做代码结构设计时需要注意的;
    3. 提高系统的伸缩性和性能。在系统分层了之后,我们只要把层次之间的调用接口明确了,那我们就可以从逻辑上的分层变成物理上的分层。当并发或者吞吐量上来了之后,我们可以采用集群部署的方式,将各个层分属在不同的物理机上,这样就会使我们的项目可以更好的横向拓展。
  • 相关阅读:
    由 Rest参数 和 Spread扩展运算符想到的...
    输出数组重复项
    echarts 踩坑记
    es6 Promise.all() 和 Promise.race() 区别
    关于Promise.all
    移动端弹出层平滑滚动和fix定位的冲突
    ES6 数组和字符串
    IE9以下 placeholder兼容
    jQuery设置聚焦并使光标位置在文字最后
    处理GitHub不允许上传大于100M文件问题
  • 原文地址:https://www.cnblogs.com/monco-sxy/p/13473150.html
Copyright © 2020-2023  润新知