Spring Boot 讀取靜態(tài)資源文件的方法
一、需求場景
有時候我們需要在項(xiàng)目中使用一些靜態(tài)資源文件,比如城市信息文件 countries.xml,在項(xiàng)目啟動后讀取其中的數(shù)據(jù)并初始化寫進(jìn)數(shù)據(jù)庫中。
二、實(shí)現(xiàn)
靜態(tài)資源文件 countries.xml 放在 src/main/resources 目錄下
使用 Spring 的 ClassPathResource 來實(shí)現(xiàn) :
Resource resource = new ClassPathResource("countries.xml");
File file = resource.getFile();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
ClassPathResource 類的注釋如下:
Resource implementation for class path resources. Uses either a given ClassLoader or a given Class for loading resources.
Supports resolution as java.io.File if the class path resource resides in the file system, but not for resources in a JAR. Always supports resolution as URL.
翻譯過來就是:
類路徑資源的資源實(shí)現(xiàn)。使用給定的ClassLoader或給定的類來加載資源。
如果類路徑資源駐留在文件系統(tǒng)中,則支持解析為 java.io.File,如果是JAR中的資源則不支持。始終支持解析為URL。
三、Jar 中資源文件
上面也提到了,如果靜態(tài)資源文件在文件系統(tǒng)里,則支持解析為 java.io.File,程序是能正常工作的。
到項(xiàng)目打包成 Jar 包放到服務(wù)器上運(yùn)行就報找不到資源的錯誤了!
解決法案是:不獲取 java.io.File 對象,而是直接獲取輸入流:
Resource resource = new ClassPathResource("countries.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));
說明:構(gòu)造得到 resource 對象之后直接獲取其輸入流 resource.getInputStream()。
四、附錄
- Spring Boot access static resources missing scr/main/resources
- Classpath resource not found when running as jar
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot中配置Web靜態(tài)資源路徑的方法
- springboot項(xiàng)目打成jar包后無法獲取static下的靜態(tài)資源文件的問題分析
- SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實(shí)現(xiàn)
- springboot2版本無法加載靜態(tài)資源問題解決
- springboot如何獲取相對路徑文件夾下靜態(tài)資源的方法
- 在SpringBoot中靜態(tài)資源訪問方法
- SpringBoot靜態(tài)資源css,js,img配置方案
- Spring boot 默認(rèn)靜態(tài)資源路徑與手動配置訪問路徑的方法
- Spring Boot訪問靜態(tài)資源css/js,你真的懂了嗎
相關(guān)文章
springBoot server.port=-1的含義說明
這篇文章主要介紹了springBoot server.port=-1的含義說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Spring?Boot?接口加解密功能實(shí)現(xiàn)
在我們?nèi)粘5腏ava開發(fā)中,免不了和其他系統(tǒng)的業(yè)務(wù)交互,或者微服務(wù)之間的接口調(diào)用;如果我們想保證數(shù)據(jù)傳輸?shù)陌踩?,對接口出參加密,入?yún)⒔饷埽@篇文章主要介紹了Spring?Boot?接口加解密功能實(shí)現(xiàn),需要的朋友可以參考下2023-04-04
Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置方法
本篇文章主要介紹了Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置方法,具有一定的參考價值,有興趣的可以了解一下。2017-04-04
skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用
這篇文章主要為大家介紹了skywalking源碼解析javaAgent工具ByteBuddy應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
MybatisPlus特殊查詢的實(shí)現(xiàn)介紹
這篇文章主要介紹了MybatisPlus查詢投影、聚合查詢、分組查詢、等值查詢、范圍查詢、模糊查詢、排序查詢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10

