mybatisplus 配置引起的生產問題 no bean ‘sqlSessionFactory‘
問題描述
在專案中整合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
原始碼分析
就是這塊的坑,自動配置沒搞定,然後就報錯了
問題解決
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]
相關文章
- ngnix叢集產生的問題
- 由分號引起的問題
- 生產消費問題
- Linux 萬用字元可能產生的問題Linux字元
- 一個RESOURCE MANAGER引起的問題分析
- 故障分析 | show processlist 引起的效能問題
- [轉帖]一個NAT問題引起的思考
- 一次跨域問題引起的思考跨域
- linux sed 命令引起的^M問題解決Linux
- 多執行緒引起的效能問題分析執行緒
- Flink生產環境常見問題
- 生產者與消費者問題
- Bean的一生(Bean的生命週期)Bean
- Swoole Compiler 加密 Drupal 產生的一些問題Compile加密
- 解決生產日誌重複列印的問題
- 一次inmemory丟失引起的問題分析
- linux 生產者與消費者問題Linux
- springboot+mybatisplus+druid資料來源:SQLException問題Spring BootMyBatisUISQLException
- 一個浮點數跨平臺產生的問題
- 記一次生產頻繁發生FullGC問題GC
- Spring Bean 的一生SpringBean
- 從線上當機引起的問題談開去
- 浮動元素引起的問題和解決辦法
- 浮動元素引起的問題和解決辦法?
- SQL執行計劃異常引起的效能問題SQL
- SQL執行計劃異常 引起的效能問題SQL
- springboot @RequestBody bean 物件 為空問題Spring BootBean物件
- java實現生產者消費者問題Java
- 【精益生產】為什麼都說庫存引起的浪費最大?
- 6、JUC:傳統的生產者消費者問題,防止虛假喚醒問題
- 記一次SparkStreaming不產生新的batchJob的問題排查SparkBAT
- 不是,哥們,誰教你這樣處理生產問題的?
- 如何解決精益生產專案中出現的問題?
- 一次rman恢復引起的nologging問題模擬
- 記憶體洩漏引起的 資料庫效能問題記憶體資料庫
- MyBatisPlus解決邏輯刪除與唯一索引的相容問題MyBatis索引
- 如何避免洗衣液批發生產廠家的產品質量問題?
- python中多程式消費者生產者問題Python