MyBatis有一個非常頭疼的問題,就是當Mapper XML寫法定義錯誤的時候,系統起不來,但也不報錯,始終卡到如下信息位置:
信息: Initializing Spring root WebApplicationContext
問題分析思路就不敘述了,直接說解決方法吧:
新建一個類,繼承 org.mybatis.spring.SqlSessionFactoryBean 類,重載 buildSqlSessionFactory 方法,捕獲 NestedIOException 異常,並打印異常,如下:
1 try { 2 return super.buildSqlSessionFactory(); 3 } catch (NestedIOException e) { 4 e.printStackTrace(); // XML 有錯誤時打印異常。 5 throw new NestedIOException("Failed to parse mapping resource: '" + mapperLocation + "'", e); 6 } finally { 7 ErrorContext.instance().reset(); 8 }
然后修改 spring 配置文件 org.mybatis.spring.SqlSessionFactoryBean 替換為剛才新建的類。
這樣,當MyBatis解析Mapper遇到錯誤的時候就能輸出到控制台了。
