1. 程式人生 > >老司機教你通過Spring來讀取檔案的各種姿勢

老司機教你通過Spring來讀取檔案的各種姿勢

1.概述

在java日常業務開發中我們經常有可能讀取一些自定義配置或者檔案。比如說公私鑰檔案、一些固定的詞典檔案之類的,這一類統稱為資源(Resource)。很多情況下都是自己寫IO來讀取。今天開始你可以不用在造輪子了。因為Spring自帶有資源載入功能,甚至還有非常便利的方法將讀取的內容注入Spring bean。接下來我們就來見識一下吧。

2.通過Resource介面

我們可以使用Resource介面簡化資原始檔的定位。Spring幫助我們使用資源載入器查詢和讀取資源,資源載入器根據提供的路徑決定選擇哪個Resource實現。

2.1 使用Resource的實現類

org.springframework.core.io.Resource介面常用的有兩個實現類: org.springframework.core.io.ClassPathResource 用來載入classpath下的資源,我們直接讀取springboot 配置檔案 application.properties,其中已經寫入了一個配置 server.port=8080

org.springframework.core.io.FileSystemResource 用來載入系統檔案,通常通過檔案的絕對或者相對路徑來讀取。上面的例子我們用這個來試一試。不同的是這次我們需要檔案的路徑。

2.2 使用ResourceLoader

如果你業務中需要使用延遲載入,我們可以使用類ResourceLoader:

我們也可以使用@Autowired將ResourceLoader注入我們的bean :

根據上圖ApplicationContext 繼承了ResourceLoader 介面。因此我們可以通過Spring bean 注入的方式來讀取資源。 ​​

這種使用方式看上去更Spring,接著往下看,還有更Spring的騷操作。

2.3使用@Value註解

我們直接使用@Value註解將資源直接注入Spring bean。還有這種操作!不行了!我已經迫不及待的要寫幾行試試了:

​​

完美無暇!斷言全部正確!不知道能不能讀取圖片。我想也是可以的,這個留給你自己發掘。但是就這麼結束了嗎?玩一個刺激點的。為什麼不直接解析出來並注入物件呢?SpEL(Spring Expression Language)可以做到這一點。讓我們來見識一下吧。 2.4 使用SpEL直接解析 為了展現靈活性,這裡我們定義自己的解析類。我們定義了一個讀取配置檔案的工具類 cn.felord.mapstruct.util.ResourceReader

​​

兩個方法都是一樣的效果,但是要展現的是不同途徑。下面的程式碼必須讓它的出場與眾不同:

​​

被註釋掉的程式碼同樣管用,你很容易觀察到它們之間的差別。

3,總結

經過上面的講解,我們瞭解了Spring去處理資原始檔的各種姿勢。而且還有直接獲取並裝配資源的方法。相信看了本文之後你會立即拋掉以前的老套做法。

多多關注我的公眾號,有問題可以留言私信

在這裡   
 
 </div> 
 <div class=

相關推薦

司機通過Spring讀取檔案各種姿勢

1.概述 在java日常業務開發中我們經常有可能讀取一些自定義配置或者檔案。比如說公私鑰檔案、一些固定的詞典檔案之類的,這一類統稱

泥鰍山司機部署tomcat應用服務器

tomcat的安裝部署tomcat的安裝一、查看操作系統環境操作系統查看 linux 版本信息的方法:#uname –aLinux idc010vm010 2.6.32-220.4.2.el6.x86_64 #1 SMP Tue Feb 14 06:00:16 GMT 2012 x86_64 x86_64 x

建站司機如何選擇海外空間

一個好的網站上線,必須有快速穩定的網站空間托管才行。筆者在建站行業做了也有五六年的時間了,很多時候客戶自己不懂得如何選擇靠譜的網站空間,都是筆者代為選購。實際上選擇主機空間很簡單,只要了解了網站的基本需求就可以了。由於筆者主要是做一些外貿類的網站,主要接觸的是海外空間,海外主機無需備案,性價比高,相信

怎麽判斷車頭與前車距離?司機一小竅門!

方法 load auto 功能 小時 pla 距離 com 車輛 很多新手老手司機在開車的時候,總會面臨汽車刮蹭的問題,主要是由於司機不能準確判斷自己車頭與前車的距離,車尾與後車的距離。 其實在面臨這種問題的時候,車主可以通過目測車輛前部遮擋前車後部的位置來確定。 1、

10年Android司機打造獨一無二的刷新加載框架

代碼 out ID 添加 一起 compile 定義 說了 AD 首先我們給出如下幾個參數,後面要用: 10年Android老司機教你打造獨一無二的刷新加載框架既然是刷新,我們的滾動肯定是在 父view 之前的。所以我們需要在 onNestedPreScroll 這個方法裏

司機如何停車!

strong fff 引導 控制 RoCE 大小 fab size cto 停車入位主要有兩種情形,一種是路邊停車,一種是停車場停車。在這兩種情形下,停車技巧略有區別。  路邊停車  對於新手來說,在路邊的串聯式(縱列)停車位停車是難度特別大的一種  路邊順向停車,一般剛接

我們不一樣!司機用C語言制作簡單實用的撩妹神器!

能力 pac normal c語言實現 linux系統 要求 以及 dia 自己 你以為C語言就是提供一種編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言嗎?你以為C語言就只是以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包

司機註冊電子郵箱後,如何搬遷郵箱!

不知道大家有沒有遇過這樣的情況,企業剛更換郵箱時,在郵箱系統搬遷的時候往往因為各種原因導致搬遷不成功,很多重要資料檔案也因此丟失,其實企業郵箱有一個郵件系統協議搬家功能可以幫助我們更好地搬家,接下來以網易企業郵箱為例,和大家說說如何操作。 第一步:在郵箱中找到系統搬家的功能。搬遷功能只能由管理員進行操作,所

阿里司機使用Spring框架快速搭建Web工程專案

演講嘉賓簡介 呂德慶(花名:嵛山), 阿里巴巴高階開發工程師,武漢大學地信碩士,有豐富的系統開發經驗,目前就職於阿里巴巴程式碼中心團隊,負責後端開發。 本文首先將介紹Spring框架的相關概念,其次將藉助Spring Web示例工程帶大家學習如何快速開發Spring Web應用。 一、Sprin

【Bugly乾貨分享】司機 “飆” EventBus 3

EventBus對於Android開發老司機來說肯定不會陌生,它是一個基於觀察者模式的事件釋出/訂閱框架,開發者可以通過極少的程式碼去實現多個模組之間的通訊,而不需要以層層傳遞介面的形式去單獨構建通訊橋樑。從而降低因多重回調導致的模組間強耦合,同時避免產生大量內部類。它擁有使

司機如何撩妹:程式設計師撩妹技術 30 分鐘從門到精通

大家都說程式設計師不會跟女生打交道,甚至程式設計師被強行打上“性格內向”“表情木訥”的標籤,更加給女生“無趣”的印象。但是實際上並非如此,我認為程式設計師兄弟們性格並不內向,也不木訥,只是在和女生交往過程中沒有一個明確的方法論作為指導(即“套路”),所以導致任憑自己

新網站百度不收錄?司機三個套路

很多站長都會遇到這個問題,網站開發完成上線後,百度一直不收錄。 即使收錄也只是收錄個首頁,內頁很難快速被收錄。如何解決這個問題? 搜尋引擎的進化 網際網路早期,網站數量有限,所以人工整理是可行的,比如就有DMOZ這樣的人工編輯的網站資料庫,分門別類的整理好各種網

司機如何快速入門Linux | 小白必知

         Linux起源於20世紀70年代,是一種優秀的作業系統系統。初次接觸到Linu

司機如何優雅地完成一個小專案測試

一、概述 本文以寫實風格記錄TBS Studio開發除錯工具測試全過程。包括測試人力申請、測試策略制定、系統測試以及眾測體驗。對於測試初學者可以瞭解到整個流程是如何一步一步走下來的。對於有一定經驗的同學可以領略到測試策略制定過程中基於風險和成本的測試理念。 二、

司機如何用Unity和Cardboard把3D遊戲做成VR遊戲

原網址 隨著Oculus宣佈1月6日開啟預售,2016年很可能成為VR遊戲元年,但很多的調研顯示,手遊裝置才是市場增長的關鍵,SuperData釋出的報告顯示,2016年全球VR遊戲市場規模預計在51億美元左右,消費者裝置安裝量在3890萬左右,憑藉價格門檻的優勢,以谷歌Cardboard和三星Gear

怎麽恢復u盤刪除的文件?司機技巧

行數 掌握 相關操作 src size 誤刪數據 分區 好的 之前 怎麽恢復U盤刪除的文件?U盤相信是各位使用和接觸最多的一種數據存儲設備了吧,價格實惠又便於操作,但是在進行U盤中文件相關操作過程時如果出現意外導致文件被刪除的話,該怎麽去恢復U盤刪除的文件呢?  U盤上的文

靚仔,整合SpringBoot還在百度搜配置嗎?司機一招!!!

## 導讀 - 最近陳某公司有些忙,為了保證文章的高質量可能要兩天一更了,在這裡陳某先說聲不好意思了!!! - 昨天有朋友問我SpringBoot如何整合Redis,他說百度谷歌搜尋了一遍感覺不太靠譜。我頓時驚呆了,原來你們整合SpringBoot都是上網搜尋配置的? - 今天陳某就讓小夥伴擺脫配置的困擾

司機用MaxCompute和表格存儲玩轉車聯網數據

tps 爆發 sqlserve 屬性 分庫 所有 spa 控制 定期 原文鏈接 “自動駕駛汽車”在近兩年頻頻出現於各大科技新聞頭條,自2012年谷歌獲得美國首個自動駕駛汽車許可證以來,國外各大知名汽車廠商如奔馳、沃爾沃、大眾、通用、豐田、日產、特斯拉等也紛紛宣布自己的自動駕

碰碰車司機Linux下使用nmon分析系統性能

碰碰車 linux 軟件包 司機 下載nmon。 根據CPU的類型選擇下載相應的版本:http://nmon.sourceforge.net/pmwiki.php?n=Site.Downloadwget http://sourceforge.net/projects/nmon/files/d

躺好,司機收割小米機器人

朋友圈 gif bsp 獲得 文章標題 str 朋友 -1 我們 在第二期大米體驗師活動期間,我們收到了許多大米雲用戶精心撰寫的稿件。 內容大多是他們在工作、創業中和大米雲發生的故事。 雖然沒有離奇的事件,沒有煽情的文字。但是,每每閱讀稿件時,我們都會微微淚目,低頭沈吟;原