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

Maven 的配置文件路徑讀取方法

 更新時(shí)間:2020年06月09日 11:27:19   作者:imxfly  
這篇文章主要介紹了Maven 的配置文件路徑讀取方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在使用 XML 的配置方式來(lái)構(gòu)建 Mybatis 的核心類 SqlSessionFactory 時(shí),遇到了配置文件路徑總是寫不對(duì)的問(wèn)題。事后看其實(shí)就是沒(méi)有好好看文檔,一直在盲人摸象。

下面時(shí)讀取 XML 配置文件的代碼:

var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");
var sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputSteam);

一開(kāi)始我是將配置文件放在 src/main/java/com/imxfly/config/mybatis.xml 中,然后讀取路徑寫成:com/imxfly/config/mybatis.xml ,但是提示 java.io.IOException: Could not find resource com/imxfly/config/mybatis.xml。

所以關(guān)鍵是這里的配置文件路徑如何填寫,我們知道讀取的路徑并不是按照當(dāng)前開(kāi)發(fā)時(shí)候的目錄結(jié)構(gòu)來(lái)的,而是編譯后在項(xiàng)目 target 目錄下以 classes 目錄為 classpath(即類的根目錄)去讀取的。

假設(shè)我們把配置文件放在 src/main/java/com/imxfly/config 目錄下,那么使用 maven compile 編譯后去查看 target 目錄你會(huì)發(fā)現(xiàn)找不到這個(gè)配置文件,這是因?yàn)?Maven 編譯的時(shí)候默認(rèn)只讀取 src/main/java 目錄下的 .java 文件然后編譯成 .class 文件,所以你在 target 目錄下是找不到我們的配置文件的,怎么解決呢?

推薦的做法是把這些 XML 配置文件放在 src/main/resources 目錄下。

在官方文檔(點(diǎn)擊查看)中清楚的描述了這一行為,其中有一句話:

Within artifact producing source directories (ie. main and test), there is one directory for the language java (under which the normal package hierarchy exists), and one for resources (the structure which is copied to the target classpath given the default resource definition).

對(duì)于 resources 目錄,其目錄結(jié)構(gòu)會(huì)完整的直接拷貝到 target classpath 中,假如我們有如下 src 的目錄結(jié)構(gòu):

.
├── main
│  ├── java
│  │  └── com
│  │    └── imxfly
│  │      └── App.java
│  └── resources
│    └── config
│      └── mybatis.xml
└── test
  └── java
    └── com
      └── imxfly
        └── AppTest.java

那么編譯完后的 target 目錄結(jié)構(gòu)就是:

.
├── classes
  ├── com
  │  └── imxfly
  │    └── App.class
  └── config
    └── mybatis.xml

所以我們?cè)诖a中讀取配置文件的路徑就是:

var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");

因?yàn)槟J(rèn)情況下,Maven 會(huì)在 src/main/resources 去尋找項(xiàng)目的資源文件。

但是如果我們的項(xiàng)目結(jié)構(gòu)不好修改,配置文件就在 src/main/java/com/imxfly/config/mybatis.xml 怎么辦?

此時(shí)我們就需要在 Maven 配置文件 pom.xml 中去告訴 Maven 我們的資源文件放在了哪里:

<project>
 ...
 <build>
  ...
  <resources>
   <resource>
    <directory>src/main/java/com/imxfly/config</directory>
   </resource>
   <resource>
    <directory>src/main/java/com/imxfly/config2</directory>
   </resource>
   <resource>
    <directory>src/main/java/com/imxfly/config3</directory>
   </resource>
  </resources>
  ...
 </build>
 ...
</project>

編譯時(shí) Maven 就會(huì)把這些目錄下的文件結(jié)構(gòu)完整的拷貝到 target 目錄下(就像上面完整拷貝 resources 目錄一樣),所以此時(shí)我們的讀取路徑為:

var inputSteam = Resources.getResourceAsStream("mybatis.xml");

參考資料:

https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

到此這篇關(guān)于Maven 的配置文件路徑讀取方法的文章就介紹到這了,更多相關(guān)Maven 配置文件路徑讀取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java如何自定義異常打印非堆棧信息詳解

    Java如何自定義異常打印非堆棧信息詳解

    這篇文章主要給大家介紹了關(guān)于Java如何自定義異常打印非堆棧信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • 淺析對(duì)Java關(guān)鍵字final和static的理解

    淺析對(duì)Java關(guān)鍵字final和static的理解

    本文主要給大家談?wù)勑【帉?duì)java關(guān)鍵字final和static的理解,本文給大家介紹的較詳細(xì),需要的朋友參考參考下
    2017-04-04
  • java編程題之從上往下打印出二叉樹(shù)

    java編程題之從上往下打印出二叉樹(shù)

    這篇文章主要為大家詳細(xì)介紹了java編程題之從上往下打印出二叉樹(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Java的Shiro框架認(rèn)證流程詳解

    Java的Shiro框架認(rèn)證流程詳解

    這篇文章主要介紹了Java的Shiro框架認(rèn)證流程詳解,Shiro 是一個(gè)功能強(qiáng)大和易于使用的安全框架,為開(kāi)發(fā)人員提供一個(gè)直觀而全面的解決方案的認(rèn)證,授權(quán),加密,會(huì)話管理四大功能,需要的朋友可以參考下
    2024-01-01
  • JavaGUI模仿QQ聊天功能完整版

    JavaGUI模仿QQ聊天功能完整版

    這篇文章主要為大家詳細(xì)介紹了JavaGUI模仿QQ聊天功能完整版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java橋接模式原理及用法解析

    Java橋接模式原理及用法解析

    這篇文章主要介紹了Java橋接模式原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot的DeferredResult案例:DeferredResult的超時(shí)處理方式

    SpringBoot的DeferredResult案例:DeferredResult的超時(shí)處理方式

    這篇文章主要介紹了SpringBoot的DeferredResult案例:DeferredResult的超時(shí)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • java Date裝成英文String后,無(wú)法再轉(zhuǎn)回Date的解決方案

    java Date裝成英文String后,無(wú)法再轉(zhuǎn)回Date的解決方案

    本文介紹了java Date裝成英文String后,無(wú)法再轉(zhuǎn)回Date的解決方案。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • Java  Object類中的常用API介紹

    Java  Object類中的常用API介紹

    這篇文章主要介紹了Java  Object類中的常用API介紹,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • Java基于swing實(shí)現(xiàn)的彈球游戲代碼

    Java基于swing實(shí)現(xiàn)的彈球游戲代碼

    這篇文章主要介紹了Java基于swing實(shí)現(xiàn)的彈球游戲代碼,包含了窗體界面設(shè)計(jì)與游戲的邏輯功能處理,具有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11

最新評(píng)論