持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情
背景
- 记录Mybatis的架构设计
过程
-
架构图
-
说明
-
接口层,SqlSession就是我们每次请求创建的sqlSession会话实例。功能就是跟数据库进行交互。执行的动作就是CRUD操作。
-
数据库处理层,配置信息(参数信息,sql信息,结果集返回映射信息),解析配置信息,类型转换(java type到jdbc type; jdbc type到java type)
-
基础层。提供基础设施,比如读取文件资源的io, 构建xml的builder,解析xml的xpath、xnode,事务管理,缓存管理,连接池等。
-
总的来说,mybatis架构不复杂、源码其实也不多。而且用到java核心基础知识就是:反射和动态代理。
-
层层相互依赖,共同合作实现ORM框架工具。层与层之间是依赖关系,但是架构上是完全解耦独立的,并且保持扩展功能(plugin)。
小结
-
实现一个方法。方法中用到的常量、变量、枚举、设计模式、类、接口、递归等等一系列,都可以把这些小知识理解成架构的一部分。
-
然后,上升到实现一个功能需要哪些架构中的组件。这个功能由哪些方法一起组合成的。
-
然后,上升到实现一个应用需要哪些模块组件。模块功能和模块关系如何划分。如何解耦。
-
最后,上升到实现一个分布式系统需要哪些架构中的组件(消息中心、缓存中心、任务调度中心、配置中心、服务注册与发现中心、分布式锁、分布式事务、全局唯一ID等等基础组件),这些组件是怎样进行架构的?
-
以前,我们只是知道道理,哪怕我们心里知道道理,在实践过程中,依然还是会犯错,但是,犯错一次两次,然后反思和思考后,就会在脑海里清晰地规划出,做一件事的整个详细步骤来,每一步都很清晰,而不是模糊的。