美文网首页
java 资源文件加载处理方式

java 资源文件加载处理方式

作者: nerowu | 来源:发表于2018-07-20 17:26 被阅读0次

一、使用Class类提供的AIP。
Class的实例对象方法:
getClass().getResourceAsStream("xml/mybatis.xml");
ClassLoader的实例对象方法:
this.classLoader.getResourceAsStream("xml/mybatis.xml");
ClassLoader的静态方法:
ClassLoader.getSystemResourceAsStream("xml/mybatis.xml");

以上三种方法都是classpath下获取文件。
经过测试getClass().getResourceAsStream方法无法获取InputStream。查看此方法上的注释说明的很清楚:与给定类相关联的资源的搜索规则是由该类的定义类装入器实现的。这种方法委托给这个对象的类装入器。如果这个对象是由引导类装入器装入的,那么该方法委托给ClassLoader.getSystemResourceAsStream。
所以如果运行getClass().getResourceAsStream方法对应的ClassLoader不是xml/mybatis.xml文件的载入者的话是获取不到InputStream的。

二、使用spring resource接口类
其实spring framework中的Resource接口对各种资源文件的加载进行了封装,所以编程时优先考虑使用spring 中的resource接口类。以下对实现Resource接口的常用类如何获取InputStream进行说明。
1、ClassPathResource类getInputStream()方法对以上三种方法都进行了封装和判断。
2、FileUrlResource类getInputStream()方法是通过父类UrlResource调用来实现的。传入的路径为非classpath路径。
3、PathResource类getInputStream()方法指定了通过Files.newInputStream(this.path)获取。传入的路径为非classpath路径。
4、FileSystemResource类getInputStream()方法指定的是操作系统级路径inputStream获取方式。

关于spring framework中resource接口实现还有很多,这里不再依依列出,具体使用方式需要时查阅API即可。

总结:涉及到资源相关的操作优先考虑使用spring中的resource接口。

相关文章

网友评论

      本文标题:java 资源文件加载处理方式

      本文链接:https://www.haomeiwen.com/subject/oohqmftx.html