您的位置:首页 > 编程语言 > Java开发

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 ioc bean