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

Spring中的DefaultResourceLoader使用方法解讀

 更新時間:2024年02月02日 08:45:25   作者:小徐也要努力鴨  
這篇文章主要介紹了Spring中的DefaultResourceLoader使用方法解讀,DefaultResourceLoader是spring提供的一個默認的資源加載器,DefaultResourceLoader實現(xiàn)了ResourceLoader接口,提供了基本的資源加載能力,需要的朋友可以參考下

DefaultResourceLoader的使用

1 前言

spring的DefaultResourceLoader類實現(xiàn)了ResourceLoader接口,可以方便讀取resources等目錄下的資源文件,存在于spring-core依賴中。

其他依賴如下:

<!--    讀取File轉(zhuǎn)換為String  -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

2 使用

resources的Demo目錄下準備測試test.json文件:

在這里插入圖片描述

該包下,F(xiàn)ileUtils.readFileToString方法可將File文件轉(zhuǎn)換成String,其中需要設(shè)置字符集:

package com.xiaoxu.utils.File;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import java.io.File;
import java.io.IOException;
/**
 * @author xiaoxu
 * @date 2022-04-27
 * spring_boot:com.xiaoxu.utils.File.FileUtils
 */
public class FileUtils {
    public static String parseJsonFileToString(String caseJsonFilePath){
        DefaultResourceLoader defaultResourceLoader = new DefaultResourceLoader();
        Resource resource = defaultResourceLoader.getResource("classpath:" + caseJsonFilePath);
        File file;
        try {
            file = resource.getFile();
        } catch (IOException e) {
            throw new RuntimeException(String.format("調(diào)用%s方法失敗,文件獲取失敗",
                    Thread.currentThread().getStackTrace()[1].getMethodName()));
        }
        String s;
        try {
            s = org.apache.commons.io.FileUtils.readFileToString(file, "utf-8");
        } catch (IOException e) {
            throw new RuntimeException(String.format("調(diào)用%s方法失敗,String獲取失敗,%s",
                    Thread.currentThread().getStackTrace()[1].getMethodName(),e.getMessage()));
        }
        return s;
    }
    public static void main(String[] args) {
        System.out.println(parseJsonFileToString("Demo/test.json"));
    }
}

執(zhí)行結(jié)果如下,亦可結(jié)合fastjson使用:

{
  "data": [
    {"name": "你好","age": 30}
  ]
}

查看DefaultResourceLoader源碼可知,getResource方法讀取路徑時,開頭為classpath:的,會使用ClassPathResource類處理: 并且會截掉classpath:,

    public Resource getResource(String location) {
        Assert.notNull(location, "Location must not be null");
        Iterator var2 = this.getProtocolResolvers().iterator();

        Resource resource;
        do {
            if (!var2.hasNext()) {
                if (location.startsWith("/")) {
                    return this.getResourceByPath(location);
                }

                if (location.startsWith("classpath:")) {
                    return new ClassPathResource(location.substring("classpath:".length()), this.getClassLoader());
                }

                try {
                    URL url = new URL(location);
                    return (Resource)(ResourceUtils.isFileURL(url) ? new FileUrlResource(url) : new UrlResource(url));
                } catch (MalformedURLException var5) {
                    return this.getResourceByPath(location);
                }
            }

            ProtocolResolver protocolResolver = (ProtocolResolver)var2.next();
            resource = protocolResolver.resolve(location, this);
        } while(resource == null);

        return resource;
    }

在ClassPathResource類中,還調(diào)用了Spring的工具類StringUtils的cleanPath方法將\ \換成/,還有去掉開頭的/等等:

public ClassPathResource(String path, @Nullable ClassLoader classLoader) {
    Assert.notNull(path, "Path must not be null");
    String pathToUse = StringUtils.cleanPath(path);
    if (pathToUse.startsWith("/")) {
        pathToUse = pathToUse.substring(1);
    }
    this.path = pathToUse;
    this.classLoader = classLoader != null ? classLoader : ClassUtils.getDefaultClassLoader();
}

到此這篇關(guān)于Spring中的DefaultResourceLoader使用方法解讀的文章就介紹到這了,更多相關(guān)Spring的DefaultResourceLoader內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot actuator生產(chǎn)就緒功能實現(xiàn)解析

    Springboot actuator生產(chǎn)就緒功能實現(xiàn)解析

    這篇文章主要介紹了Springboot actuator生產(chǎn)就緒功能實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java那點兒事之Map集合不為人知的秘密有哪些

    Java那點兒事之Map集合不為人知的秘密有哪些

    Map用于保存具有映射關(guān)系的數(shù)據(jù),Map集合里保存著兩組值,一組用于保存Map的key,另一組保存著Map的value,和查字典類似,通過key找到對應(yīng)的value,通過頁數(shù)找到對應(yīng)的信息。用學(xué)生類來說,key相當(dāng)于學(xué)號,value對應(yīng)name,age,sex等信息。用這種對應(yīng)關(guān)系方便查找
    2021-10-10
  • 解決MultipartFile.transferTo(dest) 報FileNotFoundExcep的問題

    解決MultipartFile.transferTo(dest) 報FileNotFoundExcep的問題

    這篇文章主要介紹了解決MultipartFile.transferTo(dest) 報FileNotFoundExcep的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • IDEA 2020.1 版自動導(dǎo)入MAVEN依賴的方法(新版MAVEN無法自動導(dǎo)入/更新POM依賴、MAVEN設(shè)置自動更新、自動更新快捷鍵)

    IDEA 2020.1 版自動導(dǎo)入MAVEN依賴的方法(新版MAVEN無法自動導(dǎo)入/更新POM依賴、MAVEN設(shè)置自動更

    這篇文章主要介紹了IDEA 2020.1 版自動導(dǎo)入MAVEN依賴的方法(新版MAVEN無法自動導(dǎo)入/更新POM依賴、MAVEN設(shè)置自動更新、自動更新快捷鍵),需要的朋友可以參考下
    2020-08-08
  • Java實現(xiàn)按字節(jié)長度截取字符串

    Java實現(xiàn)按字節(jié)長度截取字符串

    在Java中,由于字符串可能包含多字節(jié)字符,直接按字節(jié)長度截取可能會導(dǎo)致亂碼或截取不準確的問題,下面我們就來看看幾種按字節(jié)長度截取字符串的方法吧
    2025-05-05
  • idea切換Git分支時保存未提交的文件方式

    idea切換Git分支時保存未提交的文件方式

    當(dāng)在開發(fā)分支上修改了部分文件,但功能未完成且需要修復(fù)其他分支的bug時,可以使用ShelveChanges或StashChanges暫存未提交的修改,之后在其他分支上進行修復(fù),修復(fù)完畢后,再恢復(fù)暫存的修改
    2026-04-04
  • Java實現(xiàn)Word轉(zhuǎn)PDF的全過程

    Java實現(xiàn)Word轉(zhuǎn)PDF的全過程

    在IT領(lǐng)域,文檔格式轉(zhuǎn)換是常見的任務(wù)之一,特別是在管理大量文本數(shù)據(jù)時,本文將詳細探討如何利用Java技術(shù)將Word文檔(.docx)轉(zhuǎn)換成PDF格式,需要的朋友可以參考下
    2025-04-04
  • IDE 搭配 Lombok 注解的配置方法

    IDE 搭配 Lombok 注解的配置方法

    Lombok是一個Java庫,通過注解簡化代碼編寫,減少樣板代碼,在使用IDE如IntelliJ IDEA或Eclipse結(jié)合Lombok時,需要先添加Lombok依賴,然后在IDE中配置,以啟用注解處理器,配置完成后,使用Lombok注解來簡化Java類的編寫,本文介紹IDE搭配Lombok注解的配置,感興趣的朋友一起看看吧
    2025-03-03
  • springboot集成Lucene的詳細指南

    springboot集成Lucene的詳細指南

    這篇文章主要為大家詳細介紹了springboot集成Lucene的詳細指南,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-05-05
  • 零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲到本地

    零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲到本地

    上一回我們說到了如何把知乎的某些內(nèi)容爬取出來,那么這一回我們就說說怎么把這些內(nèi)容存儲到本地吧。
    2014-11-11

最新評論

凤庆县| 屯昌县| 阿克苏市| 娄烦县| 平塘县| 醴陵市| 贞丰县| 古丈县| 兴海县| 茂名市| 门头沟区| 秭归县| 灵石县| 苗栗县| 彩票| 榆树市| 孝感市| 保亭| 丰都县| 屏南县| 城固县| 桐柏县| 龙胜| 柳林县| 荣成市| 阳春市| 台安县| 崇信县| 隆昌县| 咸阳市| 焉耆| 邛崃市| 县级市| 高邑县| 龙岩市| 嫩江县| 长春市| 新平| 红安县| 莲花县| 丹阳市|