收获
当遇到项目启动失败,却没有错误日志打印出来的时候,试试在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名字冲突
缩小了指定的别名扫描路径之后,问题解决!