mybatis集成到spring的入口及解析过程

本文详细介绍了如何将Mybatis集成到Spring中,从Spring bean工厂的入口开始,解析了@MapperScan注解如何引导Mybatis的MapperScannerRegistrar类被Spring处理。在配置文件中使用@MapperScan后,通过Spring的ConfigurationClassParser类解析importBeanDefinitionRegistrars,然后由ConfigurationClassBeanDefinitionReader加载Bean定义,完成Mybatis的解析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring bean工厂的入口

增加了@Configuration注解的配置文件,我们简称为config

接入mybatis

在config文件增加注解@MapperScan,或者增加注解@Import({MapperScannerRegistrar.class})

解析过程

我们以在config文件增加@MapperScan为例进行调试,

1)mybait虽然在spring的配置文件增加的注解是@MapperScan("***"),但是在注解MapperScan内进行了@Import({MapperScannerRegistrar.class})导入,而在spring源码的bean工厂的初始化过程中,其org.springframework.context.annotation.ConfigurationClassParser#doProcessConfigurationClass方法的org.springframework.context.annotation.ConfigurationClassParser#processImports逻辑中的org.springframework.context.annotation.ConfigurationClassParser#getImports,会递归获取所有加在config上的所有注解及其内部的注解。所以此处MapperScannerRegistrar会被获取到并进行解析,放置在importBeanDefinitionRegistrars变量中。

图一
图二
图三

2)解析Import导入数据的方法:org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader#loadBeanDefinitions,该方法做三件事情1)解析@Bean注解的方法 2)解析@ImportSelector注解的类 3)解析ImportBeanDefinitionRegistrar注解的类

图四

4)进入mybatis的解析过程

图五

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值