@Mapper 不生效问题记录

本文探讨了在项目中遇到的MybatisAutoConfiguration未生效的问题,解析了原因在于maven依赖中未正确引用mybatis,导致@Mapper注解的类无法被识别。通过调整maven依赖,确保mybatis正确引入,从而使MybatisAutoConfiguration生效,实现@Mapper注解的bean正常扫描。
摘要由CSDN通过智能技术生成

项目中的Mapper使用,整体调整了maven依赖,发现注解@Mapper 的类找不到bean,一开始以为是通用Mapper 和@Mapper 不兼容,或者mybatis-spring 和tk.mybatis 加载顺序导致的不生效问题
最终查看maven依赖,发现当前的module没有引用到mybatis,导致MybatisAutoConfiguration直接没有生效,也就没有自动完成mybatis-spring Mapper bean的初始化

解决方法

重新梳理maven module的依赖,验证mybatis引入成功后,即可。
这样,MybatisAutoConfiguration 才能生效,才会把@Mapper 注解的bean扫描到。

Mapper注解解析实现

关键类:org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.AutoConfiguredMapperScannerRegistrar
作用:默认扫描与SpringBoot相同的包路径,需要声明式的指定路径,可以使用@MapperScan,如果使用这个注解,会与默认的扫描注册类互斥。

// AutoConfiguredMapperScannerRegistrar 实现默认策略扫描和Mapper注册
@Import({ AutoConfiguredMapperScannerRegistrar.class })
// 与@MapperScan作用互斥
@ConditionalOnMissingBean(MapperFactoryBean.class)
public static class MapperScannerRegistrarNotFoundConfiguration {

}

// 与SpringBoot相同的包路径获取
List<String> packages = AutoConfigurationPackages.get(this.beanFactory);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值