mybatis xml 错误引起的程序启动卡死(没有任何报错信息,控制台卡死)排除方法
解决办法:
把日志级别提高到debug,查看日志是否有异常信息
新建一个类,继承 org.mybatis.spring.SqlSessionFactoryBean 类,重载 buildSqlSessionFactory 方法,捕获 NestedIOException 异常,并打印异常,如下:
public class MySqlSessionFactoryBean extends SqlSessionFactoryBean { protected SqlSessionFactory buildSqlSessionFactory() throws IOException { try { return super.buildSqlSessionFactory(); } catch (NestedIOException e) { //- XML有错误时打印异常 e.printStackTrace(); throw new NestedIOException("Failed to parse mapping resource: " + e); } } }
修改 mybatis 配置文件 把org.mybatis.spring.SqlSessionFactoryBean 替换为新建的类,再次启动可以在控制台输出mybatis异常信息。
原因分析:
Spring解析mapper.xml文件时,执行SqlSessionFactoryBean.buildSqlSessionFactory()到断点时,抛出的异常被spring处理,但是没有输出日志信息,