1. 程式人生 > >spring資源讀取

spring資源讀取

性問題 方案 耦合性 amp file 接口 loading 配置 特殊

  spring中對資源的讀取提供有自己的新方案,比傳統IO操作更加智能方便。

  對於所有的資源處置,spring提供了Resource接口,該接口中的方法都是通過其父接口InputStreamSource實現的。該接口有四個常用子類,通過這四個子類實現資源獲取:

    ClassPathResource、FileSystemResource、UrlResource、ByteArrayResource。

  這四個子類中最重要的是ClassPathResource,是用來讀取classpath下的資源文件:

    技術分享圖片

  此時可以發現,我們這樣都是通過子類直接實例化父接口,而這樣就違反了spring的Ioc&DI技術的理念,為了解決這樣產生的耦合性問題,提供了ResourceLoader接口。用來實現接口對象

的實例化。而ResourceLoader接口中提供有一個資源的加載方法:getResource() ;,在讀取資源之前需要在資源定位上使用一些特殊的標記,來區分資源類型:

    文件資源:fill:路徑

    網絡資源:http://路徑

    ClassPath資源:classpath:路徑

    技術分享圖片

  而獲取資源中最為重要的是獲取ClassPath下的資源:

    技術分享圖片

  這個時候雖然避免了獲取資源時使用關鍵字new,但是在定義資源加載器(ResourceLoader)的時候還是使用到了new,這個時候最好的做法是將資源利用配置文件進行註入,再交給容器管理。\

以下為重點:

  【spring-base】創建一個專門讀取資源的Bean對象:

    技術分享圖片

  【spring-base】在spring-base.xml中配置該類的bean對象。

    技術分享圖片

    這樣將實例化對象交給spring容器,避免了產生耦合:

      技術分享圖片技術分享圖片

    對於資源,一般讀取的不是某個資源,而是某一類資源,這樣就需要使用到路徑通配符:

      ?  0或1位任意字符

      *  0或1或n位任意字符

      **  匹配任意的字符

    【spring-base】修改spring-base.xml

      技術分享圖片

      技術分享圖片

spring資源讀取