記錄Mybatis框架下有關getResourceAsStream方法調用的使用注意事項


  上次簡單記錄了學習Mybatis框架遇到的問題及解決方法,今天又發現了一些細小的問題,在這里記錄下來。

  在使用Mybatis框架操作數據庫時,其中需要創建輸入流將xml配置文件加載進來,用到的方法是getResourceAsStream(資源)

  但是,這里需要注意一下,getResourceAsStream方法在多個包中都存在,但是不同包中對於方法的使用略有差別,我們再編程時大多時候使用快捷鍵生成代碼而非完全手工輸入,在自動生成是很容易忽略方法源,這里着重說明區別,區別就是一個斜杠——”/“

  或許有很多小伙伴在遇到Exception in thread "main" java.lang.NullPointerException錯誤時,從網上找到的解決方法是getResourceAsStream(/+配置文件名.xml)

  這里,我調用方法的寫法為:

  InputStream inputStream = Resources.class.getResourceAsStream("/MyConfig.xml");

  編寫時發現:在這種方式下,不需要進行拋出或者自定義異常處理,目前還不清楚為什么不需要,以下截圖主要觀察紅色標出的一行,可見需要在xml配置文件前加上”/“。

 

 

 

 

  但在我使用時意外又調用了不同包下的getResourceAsStream方法,同樣添加一個”/“,卻報錯了,錯誤提示為:java.io.IOException: Could not find resource /MyConfig.xml

  這里,我調用方法的寫法為:

  InputStream inputstream = org.apache.ibatis.io.Resources.getResourceAsStream("MyConfig.xml");

  經過一番嘗試發現:在這種方式下,不需要添加”/“,但是需要加入拋出或者自定義異常處理,以下截圖主要觀察紅色標出的一行,沒有”/“。

  

 

 

 

  總結:

    方法一:      

    ①需要添加異常處理

    ②xml配置文件前需要添加”/“

    ③寫法為Resources.class.getResourceAsStream()

    

    方法二:

 

     ①需要添加異常處理

    ②xml配置文件前不需要添加"/"

    ③寫法為:org.apache.ibatis.io.Resources.getResourceAsStream(),部分編程環境可能直接是Resources.getResourceAsStream(),例如myecplise編程環境就不需要前面的調用路徑org.apache.ibatis.io(我是用的是ecplise編程環境,不知道為什么一定需要加上調用路徑,不加還報錯 = =!)

 

    注意:以上方法的討論的代碼都是使用Alt+”/“快捷鍵自動生成的,不建議自己打,一方面提高編程效率,節省時間;另一方面可降低編寫錯誤的風險。

 

    后記:有關拋出異常處理的詳細內容在學習java時學習過,但沒有深入理解,我覺得需要補充一下。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM