返回顶部
首页 > 资讯 > 后端开发 > Python >Mybatis通过Spring完成代理类注入的流程分析
  • 878
分享到

Mybatis通过Spring完成代理类注入的流程分析

2024-04-02 19:04:59 878人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

流程分析 首先,使用mybatis的时候会定义mapper接口的基础包,一般我们会用@MapperScanner这个注解,来看下这个注解  来看下这个MapperScan

流程分析

首先,使用mybatis的时候会定义mapper接口的基础包,一般我们会用@MapperScanner这个注解,来看下这个注解

 来看下这个MapperScannerReGIStrar类

 这个类实现了ImportBeanDefinitionRegistrar也就是spring注册beanDefined时候需用到,这个重写了一下,这个方法里,前面的话是一些基础属性的赋值,最重要的是这个方法

根据basePackages去进行扫描,来跟下这个方法

 首先会调用父类生成一个BeanDefinitionHolder的集合,重点是这个方法processBeanDefinitions,而在这个方法里,重中之重的是这个

 很形象,偷换概念了,将这个bean的实现类换成了MapperFactoryBean,它肯定实现了FactoryBean的接口并实现了getObject这个方法,getObject也就是我们实例化bean获取bean的途径,继续往下跟,果然

之后是这个

 之后是这个

 调用了MapperRegistry,来看下

 最后到了MapperProxyFactory,来看下

 按照如下的步骤进行调用的,最后通过jdk动态代理的方法,绑定mapper接口的最终实现是mapperProxy

总结

关于mybatis是如何将代理类绑定到mapper接口的,大概流程是这样,通过实现ImportBeanDefinitionRegistrar,重新定义这个beanClass为

MapperFactoryBean,这个类的话是一个FactoryBean有自己的getObject方法,通过调用当前对象的sqlSession对象的getMapper方法,转而到从这个对象的configuration对象中getMapper,进而从这个对象的mapperRegistry获取,而在MapperRegistry使用mapperProxyFactory实例化,通过代理绑定MapperProxy为这个接口的真正实现类,之后的话,我们调用mapper,其实就是调用了mapperProxy,之后的流程上一张已经提过

到此这篇关于Mybatis通过Spring完成代理类注入的流程分析的文章就介绍到这了,更多相关Mybatis Spring代理类注入内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Mybatis通过Spring完成代理类注入的流程分析

本文链接: https://lsjlt.com/news/133132.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作