首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring_ClassPathResource中的获取classpath资源兑现

2012-08-08 
spring_ClassPathResource中的获取classpath资源实现一、核心代码* This implementation opens an InputStr

spring_ClassPathResource中的获取classpath资源实现

一、核心代码

* This implementation opens an InputStream for the given class path resource.* @see java.lang.ClassLoader#getResourceAsStream(String)* @see java.lang.Class#getResourceAsStream(String)*/public InputStream getInputStream() throws IOException {InputStream is;if (this.clazz != null) {is = this.clazz.getResourceAsStream(this.path);}else {is = this.classLoader.getResourceAsStream(this.path);}if (is == null) {throw new FileNotFoundException(getDescription() + " cannot be opened because it does not exist");}return is;}
?

二、逻辑:

逻辑 写道1.如果有传入一个类,将用该类的Class.getResourceAsStream来加载资源;
2.如果null则用ClassLoader来加载资源;
ClassLoader在ClassPathResource中已避免走它为null的情况,具体可以看构造方法,结合第一个分支判断。

说明:
1.Class.getResourceAsStream和ClassLoader.getResourceAsStream有区别。具体区别体现在Class.getResourceAsStream的name = resolveName(name);
2.ClassPathResource的public ClassPathResource(String path, ClassLoader classLoader)构造方法很有意思,可以看看;

三、 仔细研究可以有以下收获:

1.Java的ClassLoader知识体系;

2.Spring加载classpath资源的方式;

?

一些资料参考:

1.Java的ClassLoader知识体系:

http://zddava.iteye.com/blog/258900

http://blog.csdn.net/changewang/article/details/6107507

http://www.blogjava.net/lihuaxajh/articles/94371.html

http://blog.csdn.net/zhouysh/article/details/5889564

http://www.qqread.com/java/2010/03/w492173.html

2.Spring加载classpath资源的方式:

参考ClassPathResource和ClassUtils

?

热点排行