Spring启动过程中,没有任何异常日志也不打印(记DruidDataSource初始化成功后程序日志不再打印)

环境:Spring + Druid + Mybatis
异常情况:dataSource初始化成功后,程序仍然是运行状态,日志不再打印,并且没有任务异常信息打印
在这里插入图片描述
为什么出现这种情况?如何去发现哪里出现了异常?
出现这种情况的原因有很多,可能是某个Bean初始化时失败了,也可能是Mybatis解析mapper.xml时出现了异常,或者其他我还未遇见的原因,看源码时发现抛异常了,只是某个环节没有将异常打印出来。
想要找到异常的根源,最简单的方法就是去Debug一步一步调试。

我遇到的情况是Mybatis解析mapper.xml文件时出现了异常,具体情况:
Spring启动过程中,没有任何异常日志也不打印(记DruidDataSource初始化成功后程序日志不再打印)_第1张图片在这里插入图片描述
定义mapper.xml时,出现了同名的mapper文件,并且各文件中定义了相同的idresultMapMybatismapper.xml文件可以看做Dao层的实现,Dao层不支持方法重载,并且对于相同名称的mapper.xml文件,文件中也不能有id相同的sql片段,当然同一个文件中也不能有相同idsql片段。

我调试的过程:

  1. 首先我并不知道出现了什么异常,但是我知道程序最后打印的地方是OK的,即com.alibaba.druid.pool.DruidDataSource:947 - {dataSource-1} inited
  2. 找到DruidDataSource947行所在的方法,从这个方法开始调试
  3. 重启程序,接着一步一步调试,直到走到抛出异常的代码
    Spring启动过程中,没有任何异常日志也不打印(记DruidDataSource初始化成功后程序日志不再打印)_第2张图片
    如果Spring没有成功启动,并且没有任何异常时,大多数情况都是初始化Bean时抛出了异常,由于某些原因导致异常信息没被打印,我们可以直接找到AbstractAutowireCapableBeanFactory#doCreateBean方法,在catch处打断点,一般情况下都有异常信息的。

你可能感兴趣的:(spring,java,spring,mybatis,debug)