Spring入门14 - 资源文件的取得

入门 14 - 资源文件的取得

 首先来看看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:" 或"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()方法来进行测试。

你可能感兴趣的:(Spring入门14 - 资源文件的取得)