[转]Spring Resource loader with GetResource() example
来源:互联网 发布:mysql恢复数据库 命令 编辑:程序博客网 时间:2024/06/09 21:05
转载地址:http://www.mkyong.com/spring/spring-resource-loader-with-getresource-example/
Spring’s resource loader provides a very generic getResource() method to get the resources like (text file, media file, image file…) from file system , classpath or URL. You can get the getResource() method from the application context.
Here’s an example to show how to use getResource() to load a text file from
1. File system
Resource resource = appContext.getResource("file:c:\\testing.txt");
2. URL path
Resource resource = appContext.getResource("url:http://www.yourdomain.com/testing.txt");
3. Class path
Resource resource = appContext.getResource("classpath:com/mkyong/common/testing.txt");
You just need to specify the resource location, and the Spring will handle the rest and return you a Resource object.
Full example withgetResource() method.
package com.mkyong.common; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader; import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.core.io.Resource;public class App { public static void main( String[] args ) { ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"If-you-have-any.xml"}); Resource resource = appContext.getResource("classpath:com/mkyong/common/testing.txt"); try{ InputStream is = resource.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); }catch(IOException e){ e.printStackTrace(); } }}
Bean resource loader (ResourceLoaderAware)
Since bean does not have the application context access, how can a bean access a resources? The workaround is implement the ResourceLoaderAware interface and create setter method for ResourceLoader object. Spring will DI the resource loader into your bean.
package com.mkyong.customer.services; import org.springframework.context.ResourceLoaderAware;import org.springframework.core.io.Resource;import org.springframework.core.io.ResourceLoader; public class CustomerService implements ResourceLoaderAware{private ResourceLoader resourceLoader; public void setResourceLoader(ResourceLoader resourceLoader) {this.resourceLoader = resourceLoader;} public Resource getResource(String location){return resourceLoader.getResource(location);}}
Bean configuration file
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="customerService" class="com.mkyong.customer.services.CustomerService" /> </beans>
Run it
package com.mkyong.common; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader; import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.core.io.Resource; import com.mkyong.customer.services.CustomerService;public class App { public static void main( String[] args ) { ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"}); CustomerService cust = (CustomerService)appContext.getBean("customerService"); Resource resource = cust.getResource("classpath:com/mkyong/common/testing.txt"); try{ InputStream is = resource.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); }catch(IOException e){ e.printStackTrace(); } }}
Now you can get the resources from a bean.
Conclusion
Without this getResource() method, you will need to deal with different resources with different solution, like File object for file system resource, URL object for URL resource. Spring really did a good job with this super generic getResource()method, it really save our time to deal with resources.
- [转]Spring Resource loader with GetResource() example
- Spring Resource bundle with ResourceBundleMessageSource example
- Spring JTA multiple resource transactions in Tomcat with Atomikos example
- Spring JTA multiple resource transactions in Tomcat with Atomikos example
- @Resource example
- Spring3MVC:Themes in Spring-Tutorial with Example
- Spring MVC with ParameterizableViewController Tutorial and Example
- Spring with Hibernate persistence and transactions example
- Spring Injection with @Resource, @Autowired and @Inject
- Spring Injection with @Resource, @Autowired and @Inject
- SPRING INJECTION WITH @RESOURCE, @AUTOWIRED AND @INJECT
- Java中资源(resource)获取 Class.getResource() & ClassLoader.getResource()
- AngularJS $resource RESTful example
- Spring Bean Validation Example with JSR-303 Annotations
- RESTful Web Services Example in Java with Jersey, Spring
- spring example
- 【Spring】资源访问 ApplicationContext.getResource
- WSDL explaination with example
- Ubuntu 安装中文输入法
- DB2新建实例
- cocos2d-x3.0游戏示例SimpleGame中的一个小问题
- CALTECH 101 RESULTS
- JavaScript中的匿名函数及函数的闭包
- [转]Spring Resource loader with GetResource() example
- MTP in Android
- ABAP 直接上传图片的函数
- PAE——使32位系统支持最大64G内存
- Androidannotations——开源框架简介&简易使用准备
- ssh key登录验证的实现
- Altium Designer怎样打印出1:1的PCB
- fedora10下设置静态IP地址 (对于fedora 17同样适用) .
- 模电中常见的问题总结