收獲
當遇到項目啟動失敗,卻沒有錯誤日志打印出來的時候,試試在run方法上加個try-catch,即可捕獲到異常
MyBatis的別名掃描路徑不要指定的太寬泛,有可能會出現Bean名沖突,導致初始化失敗
聯想到之前碰到的問題,例如:
第一個想到的應該是加一層try-catch,自己把異常捕獲出來。如果能看到異常,就離解決問題不遠了
(補充閃電俠名言:如果能問題能復現,基本上就快解決了)
問題復現
引入依賴
創建MApper類、mapper.xml、在啟動類上加@MapperScan注解
application.yml配置
問題
編譯通過,但這時項目啟動出現了問題。啟動日志中沒有任何Error錯誤,每次啟動到一半就顯示Tomcat自動stop。甚至在@PostConstruct方法里打斷點都進不來。具體情況如圖:由日志可見,每次執行到:
2021-08-2516:33:47.110INFO95322---[ost-startStop-1]o.a.c.c.C.[Tomcat].[localhost].[/]:InitializingSpringembeddedWebApplicationContext
這條日志之后,tomcat就會自動停止:
2021-08-2516:33:47.356INFO95322---[main]o.Apache.catalina.core.StandardService:Stoppingservice[Tomcat]
為此絞盡腦汁,google了大量帖子,有的帖子說是數據庫沒連上,有的帖子說是spring-logging的依賴沖突,等等,試了很多辦法,都沒有解決。
卡在這個問題上卡了一個多小時,突然看到一個帖子:
”在啟動方法上套個try-catch就知道是什么異常了“
恍然大悟,在run方法上套了個try-catch,終于抓出來了異常:
原來是,在application.yml里我指定mybatis的別名掃描路徑下,有Bean名字沖突
縮小了指定的別名掃描路徑之后,問題解決!