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

使用SpringBoot獲取resources文件路徑

 更新時間:2022年06月17日 10:21:30   作者:hongyu#ding  
這篇文章主要介紹了使用SpringBoot獲取resources文件路徑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

獲取resources文件路徑

背景

在SpringBoot項目中,需要獲取resources文件的路徑,網(wǎng)上找了好多文章都不行,后面還是結(jié)合官方文檔實現(xiàn)了,這里記錄下,我使用的版本是SpringBoot2.x版本

解決方案

1、獲取resources文件夾路徑

File directory = new File("xxx/xxx/src/main/resources");
String reportPath = directory.getCanonicalPath();

xxx為你的項目內(nèi)包的名稱,F(xiàn)ile只會找到項目最外層地址;

這里需要注意,不能在xxx前面加/,否則只會找到頂層地址 

獲取resource下文件夾路徑的坑

現(xiàn)在有個需求是需要利用模板文件生成HTML 或者 PDF 文件,然后由于HTML 模板文件里面包含圖片和字體,然后我就在resource 文件夾下新建了一個文件夾,然后又分類,也就是 resource 下面有個 upload文件夾,有個 templateFile 文件夾,然后才是模板文件。也就是說模板文件在resource下面兩級目錄里面,那么問題來了。用了各種辦法,就是獲取不到這個文件。。。。。。。。

前提是maven項目的pom文件里面配置了

maven打包包含這些模板文件:

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.png</include>
                    <include>**/*.html</include>
                    <include>**/*.ttf</include>
                    <include>**/*.TTF</include>
                    <include>**/*.ttc</include>
                </includes>
                <!--是否替換資源中的屬性-->
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

然后install后,可以在當(dāng)前模塊或者項目的 target 文件夾下可以看到我們的模板文件。

這是后來我修改后的正常打包情況

其中代碼里面,用了好評率最高的這個 ClassPathResource

import org.springframework.core.io;
Resource resource = new ClassPathResource("upload/templateFile");
log.info("contextPath:{}", resource.getURL());

這時候,按照理想情況,應(yīng)該就是可以打印出來 templateFile 這個文件夾所在的絕對路徑了。如果這個文件夾存在resource下面,是可以拿到這個文件夾的絕對路徑的。

事實確是空的。。。。。就很神奇,剛開始以為。是不是因為跟別人的項目不一樣,才導(dǎo)致的這個問題呢。

后面踩坑了半天,發(fā)現(xiàn),是不是路徑太深了,把往前提一層呢,就試下把 templateFile 直接放到 resources 下面,再次嘗試,發(fā)現(xiàn)上面日志不再是空的了,可以正常取到模板文件所在的絕對路徑了。這點windows和Linux都是可以的。

然后看似問題解決了,但是由于我這邊部署使用docker鏡像部署的,獲取模板文件和生成文件也是正常的,但是由于生成的HTML文件用到了各種logo圖片文件,然后生成的文件所在位置也掛載到宿主機上了,在容器內(nèi)部查看生成的文件是正常的,但是到了宿主機上,生成的HTML文件里面的圖片就不顯示了。

期間嘗試了使用文件服務(wù)器上的圖片,是可以正常顯示的,但是由于文件服務(wù)器跟外網(wǎng)不通,所以生成的文件,放到別的地方,圖片就不顯示了。

最后還是采用最笨的方法,將容器內(nèi)部的某個路徑掛載到宿主機的同名路徑上,在宿主機的文件夾下存放固定的模板文件和需要用到的圖片,路徑硬編碼寫死到程序里面,也是可以正常生成文件和回顯的。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java驗證碼圖片生成代碼

    Java驗證碼圖片生成代碼

    這篇文章主要為大家詳細(xì)介紹了Java驗證碼圖片生成代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Springboot實現(xiàn)XSS漏洞過濾的示例代碼

    Springboot實現(xiàn)XSS漏洞過濾的示例代碼

    這篇文章主要介紹了Springboot實現(xiàn)XSS漏洞過濾的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • SpringBoot3中數(shù)據(jù)庫集成實踐詳解

    SpringBoot3中數(shù)據(jù)庫集成實踐詳解

    項目工程中,集成數(shù)據(jù)庫實現(xiàn)對數(shù)據(jù)的增曬改查管理,是最基礎(chǔ)的能力,所以下面小編就來和大家講講SpringBoot3如何實現(xiàn)數(shù)據(jù)庫集成,需要的可以參考下
    2023-08-08
  • Spring大白話之三級緩存如何解決循環(huán)依賴問題

    Spring大白話之三級緩存如何解決循環(huán)依賴問題

    Spring通過三級緩存(singletonObjects、earlySingletonObjects、singletonFactories)解決單例循環(huán)依賴,三級緩存使用Lambda表達(dá)式提前暴露bean的早期引用,確保在遞歸調(diào)用時能夠正確獲取對象實例,避免死循環(huán)
    2025-02-02
  • Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list

    Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list

    這篇文章主要介紹了Java8 實現(xiàn)stream將對象集合list中抽取屬性集合轉(zhuǎn)化為map或list的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java并發(fā)之ArrayBlockingQueue詳細(xì)介紹

    java并發(fā)之ArrayBlockingQueue詳細(xì)介紹

    這篇文章主要介紹了java并發(fā)之ArrayBlockingQueue詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java中使用Closeable接口自動關(guān)閉資源詳解

    Java中使用Closeable接口自動關(guān)閉資源詳解

    這篇文章主要介紹了Java中使用Closeable接口自動關(guān)閉資源詳解,Closeable接口繼承于AutoCloseable,主要的作用就是自動的關(guān)閉資源,其中close()方法是關(guān)閉流并且釋放與其相關(guān)的任何方法,如果流已被關(guān)閉,那么調(diào)用此方法沒有效果,需要的朋友可以參考下
    2023-12-12
  • Spring Bean 中的生命周期和獲取方式詳解

    Spring Bean 中的生命周期和獲取方式詳解

    Bean的加載和獲取過程涉及配置文件解析、資源加載、XML解析和BeanDefinition注冊等步驟,本文給大家介紹Spring Bean 的生命周期和獲取方式,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Spring?中的?Service?有多個實現(xiàn)類如何注入(多種方式)

    Spring?中的?Service?有多個實現(xiàn)類如何注入(多種方式)

    這篇文章主要介紹了Spring?中的?Service?有多個實現(xiàn)類如何注入,本文通過多種方式結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 排序算法圖解之Java希爾排序

    排序算法圖解之Java希爾排序

    希爾排序是希爾(Donald?Shell)于1959年提出的一種排序算法,其也是一種特殊的插入排序,即將簡單的插入排序進(jìn)行改進(jìn)后的一個更加高效的版本,也稱縮小增量排序。本文通過圖片和示例講解了希爾排序的實現(xiàn),需要的可以了解一下
    2022-11-11

最新評論

延长县| 旌德县| 阳城县| 华蓥市| 墨脱县| 宜州市| 荣成市| 漠河县| 大连市| 永吉县| 黄龙县| 宜阳县| 庐江县| 乌兰察布市| 咸阳市| 遵义县| 万盛区| 弋阳县| 武邑县| 荣昌县| 泉州市| 辽源市| 普宁市| 太和县| 车致| 旬邑县| 潜山县| 辛集市| 白玉县| 黑龙江省| 乌恰县| 红原县| 临漳县| 晋江市| 汨罗市| 且末县| 抚松县| 贡觉县| 邯郸县| 高淳县| 澄迈县|