Spring 学习 (一)Resource 类

您所在的位置:网站首页 resource的造句 Spring 学习 (一)Resource 类

Spring 学习 (一)Resource 类

2023-08-17 10:10| 来源: 网络整理| 查看: 265

       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 办公设备维修网 版权所有 豫ICP备15022753号-3