欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ò)誤。

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

找到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è)很無語(yǔ)的錯(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實(shí)現(xiàn)多個(gè)子域共享cookie的示例

    SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例

    本文主要介紹了SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java中JUC?的?Exchange?交換器詳情

    Java中JUC?的?Exchange?交換器詳情

    這篇文章主要介紹了Java中JUC?的?Exchange?交換器詳情,文章基于Java的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Java中excel表數(shù)據(jù)的批量導(dǎo)入方法

    Java中excel表數(shù)據(jù)的批量導(dǎo)入方法

    這篇文章主要為大家詳細(xì)介紹了Java中excel表數(shù)據(jù)的批量導(dǎo)入方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Spring Data JPA 建立表的聯(lián)合主鍵

    Spring Data JPA 建立表的聯(lián)合主鍵

    這篇文章主要介紹了Spring Data JPA 建立表的聯(lián)合主鍵。本文詳細(xì)的介紹了2種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • Zookeeper實(shí)現(xiàn)分布式鎖代碼實(shí)例

    Zookeeper實(shí)現(xiàn)分布式鎖代碼實(shí)例

    這篇文章主要介紹了Zookeeper實(shí)現(xiàn)分布式鎖代碼實(shí)例,Zookeeper?分布式鎖應(yīng)用了其?臨時(shí)順序節(jié)點(diǎn)?的特性,在Zookeeper中創(chuàng)建一個(gè)持久節(jié)點(diǎn)ParentLock,當(dāng)?shù)谝粋€(gè)客戶端要獲取鎖時(shí),在ParentLock節(jié)點(diǎn)下創(chuàng)建一個(gè)臨時(shí)順序節(jié)點(diǎn),需要的朋友可以參考下
    2023-12-12
  • java 微信隨機(jī)紅包算法代碼實(shí)例

    java 微信隨機(jī)紅包算法代碼實(shí)例

    這篇文章主要介紹了java 微信隨機(jī)紅包算法的相關(guān)資料,并附實(shí)例代碼,需要的朋友可以參考下
    2016-10-10
  • Java字符串拼接詳解

    Java字符串拼接詳解

    大家好,本篇文章主要講的是Java字符串拼接詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • SpringMVC ViewResolver視圖解析器組件

    SpringMVC ViewResolver視圖解析器組件

    這篇文章主要介紹了SpringMVC ViewResolver視圖解析器組件,Spring MVC的視圖解析器 ViewResolver 是框架中一個(gè)重要的組件,用于將控制器返回的邏輯視圖名稱解析為具體的視圖實(shí)現(xiàn)對(duì)象,最終呈現(xiàn)給用戶的是具體的視圖實(shí)現(xiàn)
    2023-04-04
  • eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程)

    eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程)

    這篇文章主要介紹了eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot中AOP的動(dòng)態(tài)匹配和靜態(tài)匹配詳解

    SpringBoot中AOP的動(dòng)態(tài)匹配和靜態(tài)匹配詳解

    這篇文章主要介紹了SpringBoot中AOP的動(dòng)態(tài)匹配和靜態(tài)匹配詳解,在創(chuàng)建代理的時(shí)候?qū)δ繕?biāo)類的每個(gè)連接點(diǎn)使用靜態(tài)切點(diǎn)檢查,如果僅通過靜態(tài)切點(diǎn)檢查就可以知道連接點(diǎn)是不匹配的,則在運(yùn)行時(shí)就不再進(jìn)行動(dòng)態(tài)檢查了,需要的朋友可以參考下
    2023-09-09

最新評(píng)論