最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis啟動(dòng)時(shí)控制臺(tái)無限輸出日志的原因及解決辦法

 更新時(shí)間:2016年07月01日 17:07:04   作者:isea533  
這篇文章主要介紹了MyBatis啟動(dòng)時(shí)控制臺(tái)無限輸出日志的原因及解決辦法的相關(guān)資料,需要的朋友可以參考下

你是否遇到過下面的情況,控制臺(tái)無限的輸出下面的日志:

Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.

這個(gè)錯(cuò)誤只有在和Spring集成的情況下才會(huì)出現(xiàn)。

每次只要出現(xiàn)這個(gè)錯(cuò)誤,我都知道是XML出錯(cuò)了,但是具體是那個(gè)XML還沒法直接確認(rèn),因?yàn)檫@里的日志看不出來任何有用的信息。

想定位這個(gè)錯(cuò)誤,我有一個(gè)常見的方法,就是從程序啟動(dòng)的某一個(gè)入口斷點(diǎn),然后逐步定位這個(gè)錯(cuò)誤。

不過這種方式仍然很麻煩,這里要說的是一種迅速定位解決的辦法,操作起來很簡單。

找到org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory 類,在下面方法:

protected void autowireByType(
String beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs) {
這個(gè)方法大概在1200行左右。找到這個(gè)方法中catch異常的地方:
catch (BeansException ex) {
throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, propertyName, ex);
}

在throw這一行斷點(diǎn)即可,這個(gè)地方是最早捕獲異常的地方,當(dāng)Mapper.xml文件出錯(cuò)的時(shí)候,這里的異常信息如下:

這里寫圖片描述

異常信息是很詳細(xì)的,具體異常文字如下:

org.springframework.core.NestedIOException:
Failed to parse mapping resource:
'file [F:\Liu\Git\bhgl\target\Franchisee-1.0\WEB-INF\classes\com\abel533\property\dao\EmployeeMapper.xml]';
nested exception is org.apache.ibatis.builder.BuilderException:
Error creating document instance.
Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允許有內(nèi)容。

打開這個(gè)出錯(cuò)的XML后,發(fā)現(xiàn)一個(gè)很無語的錯(cuò)誤:

這里寫圖片描述

不知道什么情況,開頭多了emplo,基本上只要是 XML 中出什么錯(cuò),都是類似的異常信息,一般都是 XML 解析出的錯(cuò)。

還有一個(gè)問題,為什么出錯(cuò)后只能看到無限輸出的一行日志,而看不到這里具體的異常信息呢?

通過追蹤代碼,發(fā)現(xiàn)在org.springframework.beans.factory.support.AbstractBeanFactory類中的方法:

protected Class<?> getTypeForFactoryBean(String beanName, RootBeanDefinition mbd) {
if (!mbd.isSingleton()) {
return null;
}
try {
FactoryBean<?> factoryBean = doGetBean(FACTORY_BEAN_PREFIX + beanName, FactoryBean.class, null, true);
return getTypeForFactoryBean(factoryBean);
}
catch (BeanCreationException ex) {
// Can only happen when getting a FactoryBean.
if (logger.isDebugEnabled()) {
logger.debug("Ignoring bean creation exception on FactoryBean type check: " + ex);
}
onSuppressedException(ex);
return null;
}
}

這里捕獲異常后,直接return null導(dǎo)致異常被吞。

由于這里是最后一層捕獲異常的地方,而且這個(gè)地方捕獲到的異常范圍會(huì)更廣,因此在這里斷點(diǎn)查看問題也是很不錯(cuò)的選擇,由于這里經(jīng)過多層異常處理,真正的錯(cuò)誤信息隱藏的比較深,如下圖:

這里寫圖片描述

看到這兒,相信再遇到這個(gè)問題的時(shí)候應(yīng)該會(huì)很容易解決了。

相關(guān)文章

  • SpringBoot使用WebSocket的方法實(shí)例詳解

    SpringBoot使用WebSocket的方法實(shí)例詳解

    WebSocket 是 HTML5 開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。這篇文章主要介紹了SpringBoot使用WebSocket,需要的朋友可以參考下
    2019-06-06
  • Java基于Socket實(shí)現(xiàn)多人聊天室

    Java基于Socket實(shí)現(xiàn)多人聊天室

    這篇文章主要為大家詳細(xì)介紹了Java基于Socket實(shí)現(xiàn)多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java中注解@JsonFormat與@DateTimeFormat的使用

    Java中注解@JsonFormat與@DateTimeFormat的使用

    從數(shù)據(jù)庫獲取時(shí)間傳到前端進(jìn)行展示的時(shí)候,我們有時(shí)候可能無法得到一個(gè)滿意的時(shí)間格式的時(shí)間日期,本文主要介紹了Java中注解@JsonFormat與@DateTimeFormat的使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼

    SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼

    本文主要介紹了SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java獲取文件編碼,jsoup獲取html純文本操作

    java獲取文件編碼,jsoup獲取html純文本操作

    這篇文章主要介紹了java獲取文件編碼,jsoup獲取html純文本操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java redisson實(shí)現(xiàn)分布式鎖原理詳解

    Java redisson實(shí)現(xiàn)分布式鎖原理詳解

    這篇文章主要介紹了Java redisson實(shí)現(xiàn)分布式鎖原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java多線程通信:交替打印ABAB實(shí)例

    Java多線程通信:交替打印ABAB實(shí)例

    這篇文章主要介紹了Java多線程通信:交替打印ABAB實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java通過What、Why、How了解弱引用

    Java通過What、Why、How了解弱引用

    這篇文章主要介紹了Java通過What、Why、How了解弱引用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • spring配置文件加密方法示例

    spring配置文件加密方法示例

    這篇文章主要介紹了spring配置文件加密方法示例,簡單介紹了什么是配置文件,然后分享了在實(shí)際生產(chǎn)環(huán)境中,對(duì)配置文件不允許出現(xiàn)明文用戶名及密碼等信息需求的Java實(shí)現(xiàn)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java HashMap在遍歷時(shí)刪除元素的實(shí)現(xiàn)

    Java HashMap在遍歷時(shí)刪除元素的實(shí)現(xiàn)

    本文主要介紹了Java HashMap在遍歷時(shí)刪除元素的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12

最新評(píng)論

盐边县| 定安县| 嘉善县| 雷波县| 株洲县| 高尔夫| 修水县| 卓尼县| 分宜县| 乌恰县| 长丰县| 德格县| 泰州市| 威信县| 上饶市| 承德县| 湘潭县| 宁南县| 读书| 合肥市| 信宜市| 阿勒泰市| 什邡市| 西吉县| 东方市| 凤庆县| 吐鲁番市| 绥棱县| 定陶县| 惠来县| 稻城县| 横山县| 北票市| 铁岭市| 闻喜县| 彩票| 崇文区| 长海县| 长岭县| 江都市| 武鸣县|