Spring入門14 - 資源文件的取得

入門 14 - 資源文件的取得 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 首先來看看ApplicationContext接口的實作,之前我們使用了ClassPathXmlApplicationContext,這會讀取CLASSPATH根目錄(加上指定路徑)中可獲取的資源文件。
 我們也可以使用FileSystemXmllApplicationContext,這會使用相對於工作根目錄的檔案路徑來取得資源文件,例如若您的工 作目錄是"c:/workspace/springtest/",而您在程序中指定了"bean.xml",則程序會至您的"c:/workspace/ springtest/bean.xml"找您指定的資源文件,同理,若您指定了"conf/somepro.properties",則會至"c:/ workspace/springtest/conf/somepro.properties"中找您指定的檔案。
 對於Web應用程序來說,您可以使用XmlWebApplicationContext,這會以您的Web應用程序作爲相對路徑的起點,例如若指定 "WEB-INF/conf/admin.properties",而您的Web應用程序是springweb,則會至"springweb/WEB- INF/conf/admin.properties"找您的檔案。
 Spring提供了對資源文件的泛型存取(generic access),而這正是一個好的應用程序在存取資源文件時最重要的特性,除了上面的方案之外,ApplicationContext繼承了 ResourceLoader接口,您可以使用getResource()方法並指定資源文件的url來取得一個實作Resource接口的實例,例如:

Resource resource = context.getResource("classpath:admin.properties");


 "classpath:"是Spring自訂的url虛擬協定,這會取回一個 org.springframework.core.io.ClassPathResource實例,資源文件是位於CLASSPATH根目錄中,您也可以指定標準的url,像是"file:"<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />或"http:",例如:

Resource resource = context.getResource("file:c:/workspace/springtest/conf/admin.properties");


 這會返回一個org.springframework.core.io.FileSystemResource實例,或者您可以如下指定來返回一個ServletContextResource實例:

Resource resource = context.getResource("WEB-INF/conf/admin.properties");


 取得一個實作Resource接口的實例之後,您可以使用getFile()、getInputStream()等方式來操作或取得資源文件的相關資 源,Resource接口的實例只是資源文件的一個抽象代表,指指定的資源文件實際上可能並不存在,您可以使用exists()方法來進行測試。

發佈了106 篇原創文章 · 獲贊 0 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章