通用Mapper的运行时注册

通用Mapper的运行时注册
一. 背景
在上一篇文章中介绍了JavaAssist的进阶的使用,主要是为了生成tkMybatis的Mapper和实体类,样例如下图所示
在这里插入图片描述在这里插入图片描述

图一 生成的类的样例
1.1 需要探索的问题
1、 Spring为了实现IOC,都会把Bean转化成BeanDefinition的方式保存在Map中,通常两种方式动态添加Bean比较常见,如图二所示
在这里插入图片描述
图二 动态添加Bean的两种方式

2、 在Mybatis中,我们知道最终的Bean是MapperProxy,这个是也是使用JavaAssist,把Interface与MapperStatement相结合完成的动态类的生成。那么上面两种方式肯定都是不行的,那又如何完成呢?
二、从ClassPathMapperScanner获得BeanDefination的定义
我们看TkMyBatis的中的ClassPathMapperScanner,它在扫描包的时候是这样实现的,见图三,图四。
在这里插入图片描述
图三 扫描包的方法

在这里插入图片描述在这里插入图片描述

图四 BeanDefination的核心处理过程

因此,我们按照这个方式进行了动态BeanDefination的添加,主要分为两个部分(1)加载Mapper的子类,如图五所示:
在这里插入图片描述
图五 自动生成Mapper类

(2)定义BeanDefination,如图六所示
在这里插入图片描述
图六 定义BeanDefination

到此为止,就完成了动态添加Mapper Bean的所有操作了。下回我们分析动态表单的接口与插件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值