[spring]從頭開始-Accessing Resources

開發工具:IntelliJ IDEA 13

開發環境:jdk1.6.0_45

Framework:spring 3

除了 *.properties 之外,當然還有 Resources 可以用來存取(一般是放在Resource目錄中的檔案),這邊就簡單的來介紹一下如何存取,先建立一個演繹類別 ResourceDemo:

ResourceDemo.java

package foo.bar;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.core.io.Resource;

/**

 * Created by Hsu on 2014/7/16.

 */

public class ResourceDemo {

    public static void main(String[] args) throws Exception {

        ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring-config.xml");

        // 指定存取指定路徑中的檔案

        Resource res1 = ctx.getResource("file:///d:/Copyright.txt");

        displayInfo(res1);

        Resource res2 = ctx.getResource("classpath:test1.java");

        displayInfo(res2);

        Resource res3 = ctx.getResource("http://www.google.com.tw");

        displayInfo(res3);

    }

    private static void displayInfo(Resource res) throws Exception{

        // 取得Class完整名稱(什麼類)

        System.out.println(res.getClass());

        // 取得物件本身

        System.out.println(res.getURL().getContent());

        System.out.println("");

    }

}

spring-config.xml 簡單放置標頭就可以了,不需要任何內容,得到的執行結果如下:

class org.springframework.core.io.UrlResource

sun.net.www.content.text.PlainTextInputStream@1a0fced4

class org.springframework.core.io.ClassPathResource

sun.net.www.content.text.PlainTextInputStream@3d3cdaa

class org.springframework.core.io.UrlResource

sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@6b86f247

值得注意的是file:http: 可以看到 spring 都將其當成相同的實體 UriResource,一般建議在取用檔案時,使用 getInputStream() 的方式來讀取檔案資料流,避免因使用 http: 並使用 getFile() 存取實體時將發生 FileNotFoundException 這樣的錯誤。

demo程式(右鍵另開視窗下載)