摘要: 1. 概述 本文,我们来分享 Spring Boot 自动配置的实现源码。在故事的开始,我们先来说两个事情: 自动配置和自动装配的区别? Spring Boot 配置的原理 2. 自动配置 V.S 自动装配 在这篇文章的开始,艿艿是有点混淆自动配置和自动装配的概念,后来经过 Google 之后,发现 阅读全文
posted @ 2019-10-05 15:35 siye1989 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 <1> 处,使用 @SpringBootApplication 注解,标明是 Spring Boot 应用。通过它,可以开启自动配置的功能。 <2> 处,调用 SpringApplication#run(Class<?>... primarySources) 方法,启动 Spring B 阅读全文
posted @ 2019-10-05 15:13 siye1989 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 本文,我们来分享 MyBatis 的插件模块,对应 plugin 包。如下图所示: 在 《精尽 MyBatis 源码解析 —— 项目结构一览》 中,简单介绍了这个模块如下: Mybatis 自身的功能虽然强大,但是并不能完美切合所有的应用场景,因此 MyBatis 提供了插件接口,我们可 阅读全文
posted @ 2019-10-05 13:29 siye1989 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 在前面,我们已经详细解析了 MyBatis 执行器 Executor 相关的内容,但是显然,Executor 是不适合直接暴露给用户使用的,而是需要通过 SqlSession 。 流程如下图: 示例代码如下: 而本文解析的类,都在 session 包下,整体类图如下: 老艿艿:省略了一部 阅读全文
posted @ 2019-10-05 11:43 siye1989 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 本文,我们来分享 SQL 执行的第五部分,延迟加载的功能的实现,涉及 executor/loader 包。整体类图如下: 从类图,我们发现,延迟加载的功能,是通过动态代理实现的。也就是说,通过拦截指定方法,执行数据加载,从而实现延迟加载。 并且,MyBatis 提供了 Cglib 和 J 阅读全文
posted @ 2019-10-05 11:38 siye1989 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 本文,我们来分享 SQL 执行的第四部分,SQL 执行后,响应的结果集 ResultSet 的处理,涉及 executor/resultset、executor/result、cursor 包。整体类图如下: 核心类是 ResultSetHandler 接口及其实现类 DefaultRe 阅读全文
posted @ 2019-10-05 11:26 siye1989 阅读(523) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 本文,我们来分享 SQL 执行的第三部分,keygen 包。整体类图如下: 我们可以看到,整体是以 KeyGenerator 为核心。所以,本文主要会看到的就是 KeyGenerator 对自增主键的获取。 2. KeyGenerator org.apache.ibatis.execut 阅读全文
posted @ 2019-10-05 10:54 siye1989 阅读(2733) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 本文,我们来分享 SQL 执行的第二部分,statement 包。整体类图如下: 我们可以看到,整体是以 StatementHandler 为核心。所以,本文主要会看到的就是 StatementHandler 对 JDBC Statement 的各种操作。 而 StatementHand 阅读全文
posted @ 2019-10-05 10:41 siye1989 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 从本文开始,我们来分享 SQL 执行的流程。在 《精尽 MyBatis 源码分析 —— 项目结构一览》 中,我们简单介绍这个流程如下: 对应 executor 和 cursor 模块。前者对应执行器,后者对应执行结果的游标。 SQL 语句的执行涉及多个组件 ,其中比较重要的是 Execu 阅读全文
posted @ 2019-10-05 10:18 siye1989 阅读(138) 评论(0) 推荐(0) 编辑