
image.png
如圖, 程式啟動的時候直接卡在了 Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource 這一句,後面就沒日志了。

image.png
但是稍微看一下jvm狀态:

image.png
可以發現 程序其實是沒死的,eden區還在緩慢增長。
是以猜測,隻是日志沒列印出來,導緻像卡住了。把日志開到debug級别,再啟動:

image.png
會發現,其實日志是有的, mybaits一直在加載mapper。
這裡其實是mybatis結合spring時的一個坑,當mapper檔案有文法錯誤時,spring會循環重試。但是。。沒有列印log出來。解決方案是重寫sqlsessionfactory,把日志打出來:
public class MySqlSessionFactory extends SqlSessionFactoryBean {
@Override
protected SqlSessionFactory buildSqlSessionFactory() throws IOException {
try {
return super.buildSqlSessionFactory();
}catch (Exception e){
e.printStackTrace();
throw e;
}finally {
ErrorContext.instance().reset();
}
}
}
然後 factory改成重寫這個:
再重新開機:

image.png
日志會很沒明确告訴你哪個檔案 哪一行 什麼錯誤