Spring 学习 (一)Resource 类 | 您所在的位置:网站首页 › resource加s吗 › Spring 学习 (一)Resource 类 |
JDK提供的访问资源的类不能很好的满足各种底层的资源访问需求,因此Spring 设计了一个Resource 接口,它为应用提供了更强的底层访问能力。 一、Resource 接口的主要方法① boolean exists(); 用来判断资源是否存在 ② boolean isOpen() ; 用来判断资源是否打开 ③ URL getURL() ;如果底层资源可以表示成 URL ,那么该方法可以返回一个 URL对象。 ④ File getFile() ;如果底层资源对应着一个文件 ,那么该方法可以返回一个 File对象。 ⑤ String getFilename(); 返回底层资源对应的文件名。 ⑥ InputStream getInputStream() ;返回底层资源对应输入流。 二、 Resource 接口的具体实现类下图是 Resource 接口的部分实现类 中的继承和实现关系 ① WritableResource 可写资源接口,FileSystemResource PathResource 都是它的实现类。 ② ByteArrayResource 可以对二进制数组资源进行访问,二进制数组资源可以在内存中通过程序构造。 ③ ClassPathResource 类路径下的资源,资源以相对于类路径的方式表示 ④ FileSystemResource 文件系统资源,资源以文件系统路径的方式表示。 ⑤ InputStreamResource 已输入流返回表示的资源。 ⑥ ServletContextResource 为访问Web 容器上下文中的资源而设计的类。负责以相对于Web 应用根目录的路径加载资源,它支持以流和URL的方式访问,在war 包解压的情况下,还可以通过File 方式访问。 ⑦ UrlResource 使用户可以访问任何可以通过URL表示的资源,如 file 、http 、ftp ⑧ PathResource spring 4.0 提供的读取资源文件的新类。 String filePath = "D:/Program/CodesTest/spring_study/springIoC/src/main/resources/conf/file1.txt"; // 使用系统文件路径来加载文件 WritableResource res1 = new PathResource(filePath); // 使用类路径来加载文件 Resource res2 = new ClassPathResource("conf/file1.txt"); // 使用 WritableResource 接口来写入资源文件 OutputStream stream1 = res1.getOutputStream(); stream1.write("你好欢迎".getBytes()); stream1.write("沙扬娜拉\n哈哈哈".getBytes()); // 使用resource 接口来读取资源 InputStream stream2 = res1.getInputStream(); InputStream stream3 = res2.getInputStream(); // 获取文件名 System.out.println("res1:"+res1.getFilename()); 三、 Spring 支持的资源类型地址前缀① classpath: 从类路径加载资源,classpath: 和 classpath:/ 是等价的,都是相对于类的根路径,资源文件可以在 标准文件系统 中,亦可以在 jar 或者 Zip 的类包中。 ② file : 使用URLResource 从系统目录中加载字眼,可以是绝对路径也可是相对路径。 ③ http:// : 使用URLResource 从Web 服务器中装载资源 ④ ftp:// 使用URLResource 从Ftp 服务器中装载资源 ⑤ 没有前缀 根据application 的具体情况来加载。 ⑥classpath* : 如果多个jar包存在相同的报名,classpath 只会在第一个加载包中查找,其余的不查找,而 classpath* : 则会找全部的包。 四、Spring 支持的几种Ant 风格的通配符① ? 匹配路径中一个字符 ② * 匹配路径中任意字符 ③ ** 匹配多层路径 五、资源加载器资源加载接口及其实现类 ResourceLoader 接口仅有一个 getResource方法。可以根据一个资源地址加载文件资源。不过资源地址仅支持带 资源类型前缀的表达式,不支持ant风格的资源路径表达式。ResourcePatternResolver 扩展了 ResourceLoader 接口,定义了一个新的接口方法, getResources ,该方法支持带资源类型前缀的表达式及支持ant风格的资源路径表达式,PathMatchingResourcePatternResolver 是spring 提供的标准实现类。 @Test public void getResources() throws IOException { ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resources = resolver.getResources("classpath*:com/spring/**"); for (Resource resource : resources) { System.out.println(resource.getDescription()); } }
|
CopyRight 2018-2019 实验室设备网 版权所有 |