Spring IoC之高级特性--加载外部资源
2014-03-08 11:39
411 查看
有时候,应用可能需要从不同的未知(例如文件系统、classpath或者URL)读取外部资源。通常,我们必须处理用于不同位置加载资源的不同API。
Spring资源加载器提供统一的getResource()方法,安装资源路径读取外部资源。我们可以为路径指定不同的前缀从不同的位置加载资源。
Resource是Spring中代表外部资源的通用接口。Spring提供Resource接口的多个实现。资源加载器的getResource()方法根据资源路径决定实例化那个Resource实现。
一、显示的加载外部资源
(1)代码片段
public class LoadResource implements ResourceLoaderAware {
private ResourceLoader resourceLoader;
@Override
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
@PostConstruct //注解方式初始化类 配置文件必须加入 <context:annotation-config/>
public void initResource() throws IOException{
//Resource resource = resourceLoader.getResource("file:E:\\debug.log");
Resource resource = resourceLoader.getResource("classpath:debug.log");
//加载资源文件
BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream()));
while(true){
String line = reader.readLine();
System.out.println(line);
if(line==null){
break;
}
}
//可以加载属性文件
// Properties props = new Properties();
// props.load(resource.getInputStream());
}
}(2)XML配置代码片段
<!-- 加载外部资源 -->
<bean id="loadResource" class="com.apress.springrecipes.resource.LoadResource"/>
二、注入资源
除了调用getResource()方法显示的加载资源文件,我们还可以使用设值方法注入资源:
(1)代码片段
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.annotation.PostConstruct;
import org.springframework.core.io.Resource;
public class InfectResource{
private Resource resource;
public void setResource(Resource resource) {
this.resource = resource;
}
@PostConstruct
public void initResource() throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream()));
while(true){
String line = reader.readLine();
System.out.println(line);
if(line==null){
break;
}
}
}
}
(2)配置片段
<!-- 注入资源 -->
<bean id="infectResource" class="com.apress.springrecipes.resource.InfectResource">
<property name="resource">
<value>classpath:debug.log</value>
</property>
</bean>
注:有关详细实例代码会在后面提供下载地址
Spring资源加载器提供统一的getResource()方法,安装资源路径读取外部资源。我们可以为路径指定不同的前缀从不同的位置加载资源。
Resource是Spring中代表外部资源的通用接口。Spring提供Resource接口的多个实现。资源加载器的getResource()方法根据资源路径决定实例化那个Resource实现。
一、显示的加载外部资源
(1)代码片段
public class LoadResource implements ResourceLoaderAware {
private ResourceLoader resourceLoader;
@Override
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
@PostConstruct //注解方式初始化类 配置文件必须加入 <context:annotation-config/>
public void initResource() throws IOException{
//Resource resource = resourceLoader.getResource("file:E:\\debug.log");
Resource resource = resourceLoader.getResource("classpath:debug.log");
//加载资源文件
BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream()));
while(true){
String line = reader.readLine();
System.out.println(line);
if(line==null){
break;
}
}
//可以加载属性文件
// Properties props = new Properties();
// props.load(resource.getInputStream());
}
}(2)XML配置代码片段
<!-- 加载外部资源 -->
<bean id="loadResource" class="com.apress.springrecipes.resource.LoadResource"/>
二、注入资源
除了调用getResource()方法显示的加载资源文件,我们还可以使用设值方法注入资源:
(1)代码片段
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.annotation.PostConstruct;
import org.springframework.core.io.Resource;
public class InfectResource{
private Resource resource;
public void setResource(Resource resource) {
this.resource = resource;
}
@PostConstruct
public void initResource() throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream()));
while(true){
String line = reader.readLine();
System.out.println(line);
if(line==null){
break;
}
}
}
}
(2)配置片段
<!-- 注入资源 -->
<bean id="infectResource" class="com.apress.springrecipes.resource.InfectResource">
<property name="resource">
<value>classpath:debug.log</value>
</property>
</bean>
注:有关详细实例代码会在后面提供下载地址
相关文章推荐
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- java基本教程之线程休眠 java多线程教程
- 解析Java中如何获取Spring中配置的bean
- Spring的注解配置与XML配置之间的比较
- java Spring整合Freemarker的详细步骤
- Java 二维码,QR码,J4L-QRCode 的资料整理
- java当中的定时器的4种使用方式
- java中 spring 定时任务 实现代码
- Spring MVC中基于自定义Editor的表单数据处理技巧分享
- Java代码重构的几种模式详解
- 基于spring+hibernate+JQuery开发之电子相册(附源码下载)
- spring实例化javabean的三种方式分享
- Spring3.2.0和Quartz1.8.6集群配置
- spring security 3.2.0.M1 方法级别教程 基于注解——第一部分
- spring security 3.2.0.M1 方法级别教程 基于注解——第二部分
- Spring 加载 xml 文件机制