mybatisplus 配置引起的生产问题 no bean ‘sqlSessionFactory‘
文章目录问题描述问题背景问题分析源码分析问题解决问题描述在项目中集成mybatis-plus以后,项目在开发工具中可以正常启动,本地和前端愉快的调试。但是用docker部署启动时出现问题。报错信息如下,这种情况下,是不是有点懵逼了。都调试好了,快要上线,结果docker部署不了?那应该是jar出的问题以下摘录docker 报错信息[org.apache.ibatis.session.SqlSess
·
问题描述
在项目中集成mybatis-plus以后,项目在开发工具中可以正常启动,本地和前端愉快的调试。但是用docker部署启动时出现问题。报错信息如下,这种情况下,是不是有点懵逼了。都调试好了,快要上线,结果docker部署不了?那应该是jar出的问题
以下摘录docker 报错信息
[org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is java.lang.IllegalArgumentException: name
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651) ~[spring-beans-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
... 65 common frames omitted
Caused by: java.lang.IllegalArgumentException: name
at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:693) ~[na:1.8.0_181]
at sun.misc.URLClassPath.findResource(URLClassPath.java:215) ~[na:1.8.0_181]
at java.net.URLClassLoader$2.run(URLClassLoader.java:569) ~[na:1.8.0_181]
at java.net.URLClassLoader$2.run(URLClassLoader.java:567) ~[na:1.8.0_181]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_181]
at java.net.URLClassLoader.findResource(URLClassLoader.java:566) ~[na:1.8.0_181]
at org.springframework.boot.loader.LaunchedURLClassLoader.findResource(LaunchedURLClassLoader.java:78) ~[jcz-zhihui-1.0.0-SNAPSHOT.jar:na]
at java.lang.ClassLoader.getResource(ClassLoader.java:1096) ~[na:1.8.0_181]
at org.springframework.core.io.ClassPathResource.resolveURL(ClassPathResource.java:155) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:193) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:498) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:298) ~[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties.getResources(MybatisPlusProperties.java:203) ~[mybatis-plus-boot-starter-3.1.0.jar!/:3.1.0]
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties.lambda$resolveMapperLocations$0(MybatisPlusProperties.java:197) ~[mybatis-plus-boot-starter-3.1.0.jar!/:3.1.0]
at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) ~[na:1.8.0_181]
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_181]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_181]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_181]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:545) ~[na:1.8.0_181]
at java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) ~[na:1.
问题背景
mybatisplus依赖如下版本
compile('com.baomidou:mybatis-plus-boot-starter:3.1.0')
compile('com.baomidou:mybatis-plus-generator:3.1.0')
问题分析
报错提示是没有sqlSessionFactory,按照springboot的尿性,在启动时只要正常配置application.yml,使用推荐的连接池,sqlSessionFactory就自动创建了,mybatis也会自动获取啊。难道mybatisplus和mybatis有点区别,既然缺少sqlSessionFactory,那就看源码呗,看怎么能把 sqlSessionFactory 搞定。
spring:
datasource:
url: jdbc:mysql://0000:00/test?nullNamePatternMatchesAll=true&tinyInt1isBit=false&useSSL=false&nullCatalogMeansCurrent=true
username: 123
password: 123
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 5 # 最小空闲连接数量
idle-timeout: 180000 # 空闲连接存活最大时间,默认600000(10分钟)
maximum-pool-size: 10 # 连接池最大连接数,默认是10
auto-commit: true # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
pool-name: authPool # 连接池名
max-lifetime: 1800000 # 此属性控制池中连接的最长生命周期,默认1800000即30分钟
connection-timeout: 30000 # 数据库连接超时时间,默认30秒,即30000
mybatis-plus:
global-config:
db-config:
id-type: auto
field-strategy: not_empty
table-underline: true
db-type: mysql
logic-delete-value: 1
logic-not-delete-value: 0
mapper-locations: classpth:/mapper/**Mapper.xml
源码分析
就是这块的坑,自动配置没搞定,然后就报错了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fVJ32yn-1605853770251)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1605843175481.png)]](https://i-blog.csdnimg.cn/blog_migrate/0afec1fcf1722e76c9d9467ba918a93e.png#pic_center)


问题解决
1、自己搞个sqlsessionFactory,这种解决办法是个掩耳盗铃的摸鱼搞法
2、定位到下面位置时,去看了源码。好吧,spring boot中,凡是配置还是复制以前的吧,不然坑是填不完的
mapper-locations路径错了
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties.getResources(MybatisPlusProperties.java:203) ~[mybatis-plus-boot-starter-3.1.0.jar!/:3.1.0]
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties.lambda$resolveMapperLocations$0(MybatisPlusProperties.java:197) ~[mybatis-plus-boot-starter-3.1.0.jar!/:3.1.0]
更多推荐



所有评论(0)