在之前的操作之中可以发现,虽然Resource的子类可以利用了字符串格式进行了隐藏,但是此时的代码之中发现ResourceLoader跟我的开发没有任何的关系.如果真的开发只关系Resource一个接口就够了。
1.为了解决Resource与ResourceLoader的操作关系耦合问题,那么在Spring设计的时候考虑到数据的自动转型问题,也就是说利用注入的操作模式,就可以让ResourceLoader消失了。
范例:编写一个资源处理类
public class ResourceBean {
private Resource resource;
public Resource getResource() {
return resource;
}
public void setResource(Resource resource) {
this.resource = resource;
}
}
要想实现数据资源的注入操作,那么就必须编写applicationCpntext.xml文件,在这个文件里面定义所需要的资源.
范例:在applocationContext.xml文件里面定义
范例:编写测试类
public class TestResource {
public static void main(String[] args)throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ResourceBean rebBean = ctx.getBean("rb",ResourceBean.class);
Scanner scanner = new Scanner(rebBean.getResource().getInputStream());
scanner.useDelimiter("\n");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
}
}
输出结果 : halo
也可以修改bean配置中的value内容为CALSSPATH或者网络访问目标资源文件,对资源文件进行读取。
利用了配置文件的方式进行处理的时候,用户关系的只是Resource一个接口的使用,而ResourceLoader接口的作用被Spring封装起来了
2.而且最为方便的是,在Spring里面允许用户设置资源数组。
范例:修改程序类
public class ResourceList {
private List resource;
public List getResource() {
return resource;
}
public void setResource(List resource) {
this.resource = resource;
}
}
修改配置文件:
file:E:\\test.xml
classpath:META-INF/license.txt
http://http://localhost:8080/ROOT/jianzhu.txt
范例:测试类
public class TestResourceList {
public static void main(String[] args)throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ResourceList rebBean = ctx.getBean("rblist",ResourceList.class);
Iterator it = rebBean.getResource().iterator();
while(it.hasNext()){
Scanner scanner = new Scanner(it.next().getInputStream());
scanner.useDelimiter("\n");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
}
}
}
输出结果:
halo
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
.............................
halo1
利用Spring读取外部文件的时候它的设计要比使用IO包更加容易。