mapper-spring-boot-starter 1.2.0,使用通用Mapper会出现无法初始化的问题

今天在线上的项目,还没更新文件的情况重新发布了下测试版,结果出现以下的错误:
Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider
折腾了一天的时间,然后找了度娘,这篇博客,找到了解决的办法,感谢,顺便记录下,一便下次查阅.

通用mapper是mybatis的扩展,它提供了一系列的通用方法,避免了冗余的xml编写和公共增删改查的重复劳动。它极大的简化了单表的增删改查,并可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。

出现这个问题: Cause: java.lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider
作者说这个问题是由于通用mapper没有初始化引起的,我查阅了关于spring boot中Configuration和AutoConfiguration加载顺序的资料,得出问题原因:spring boot中Configuration的加载在AutoConfiguration之前。 but, 为什么mybatis的starter初始化没有问题?
github上的一篇文章解答了这个问题(但我目前没在spring官网找到该描述的出处,如您找到了,请告知,谢谢。)

mapper-spring-boot-starter 1.2.0,使用通用Mapper会出现无法初始化的问题_第1张图片

发现作者是使用 @PostConstruct 完成通用mapper的初始化的,所以在 Configuration 之后才会初始化,这就引发了以上的错误。
弄明白了问题所在,那该怎么解决呢?
弄明白原因了,其实问题就解决了,我们只要让通用mapper的AutoConfiguration在Configuration之前加载就可以了,但我们没办法在使用作者提供的starter,需要自己来实现。我将实现后的代码放到了github

感谢原文作者,此处是做以下记录,如果侵权,请告知删除,谢谢!!! 原文地址

小广告

  • 觉得有帮助的和有需要的朋友帮忙点击图片/连接,再进行购买,这样可以请我喝杯咖啡.

  • 阿里云是国内云服务器市场的龙头,性价比高,速度快又安全,是站长建站首选的云服务器之一。

  • 另附上,阿里云云产品通用代金券
    通用代金券 - 最高¥1888云产品通用代金券

  • 企业云服务器特惠 - 高性能云服务器特惠,企业级性能云服务器限时2折起,更高计算网络性能

    468-60.jpg

你可能感兴趣的:(mapper-spring-boot-starter 1.2.0,使用通用Mapper会出现无法初始化的问题)