[color=blue]單例的代碼[/color]
public class DAOFactory {
//....省略
private static class SingletonHolder {
//只有在調用的時候纔會初始化!而且線程安全。
static DAOFactory instance = new DAOFactory();
}
public static DAOFactory getInstance() {
return SingletonHolder.instance;
}
}
期間我加了個ControlDao的一些ibatis的class和module竟然報錯誤:
[color=red]Exception in thread "pool-2-thread-1" java.lang.NoClassDefFoundError: Could not initialize class com.xxxx.dao.DAOFactory$SingletonHolder
[/color]
找啊找,最後我試着改成,不用單例:
public class DAOFactory {
//....省略
public static DAOFactory getInstance() {
return new DAOFactory():
}
}
結果就出現了正確的ibatis錯誤定位了:
[color=red]java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/insert'. Cause: com.ibatis.common.beans.ProbeException: There is no READABLE property named 'test' in class 'com.xxx.module.Control'[/color]
終於找到原因了,竟然是我的sql語句沒寫好,改好,再改回原來的單例,運行正常了。