[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 這樣的錯誤。