Spring Resource之内置的Resource实现

时间:2022-12-30 22:37:12

Spring提供了大量的并且可以直接使用的Resource实现

1.UrlResource

UrlResource封装了一个java.net.URL,而且可以通过一个URL用于访问任何对象,例如文件、一个HTTP目标、一个FTP目标等等。所有的URLs有一个标准的String表示,因为适当的标准化前缀用于定位从一个URL类型。这包括file:对于访问文件系统路径,http:对于通过HTTP协议访问资源,ftp:通过FTP访问资源,等等

一个URLResource是使用URLResource构造器通过java代码显示的创建的,但是当你调用一个标识路径的字符串参数的API方法的时候,它是隐含创建的。对于后者,一个JavaBeans PropertyEditor 最终决定创建资源的类型。如果路径字符串包含一些通用的前缀,例如classpath:它就对于那个前缀创建一个合适的标准化的Resource。但是,如果它没有识别那个前缀,它将会假设这只是一个标准的URL字符串,并且创建一个URLResource。

2.ClassPathResource

这个类表示应该在classpath中被操作的资源。这个都可以被上下文的类加载器、一个给定类加载器、或者一个给定的类用来加载资源。

如果类路径资源存在在一个文件系统中Resource系统支持作为java.io.File来解决的,但是在jar中还没有扩展到文件系统中这个Resource实现不是这样的。为了标识这些不同的Resource实现通车支持作为java.net.URL来解决。

一个classPathResource是用ClassPathResource构造器来通过java代码显示的创建的,但是当你调用一个有标识路径字符串的API方法的时候它会隐含的创建的。对于后面的情况,一个JavaBean PropertyEditor将会识别特殊的classpath浅醉:在字符串路径并且在里面创建一个ClassPathResouce.

3.FileSystemResource

这个是一个基于Java.io.File的一个Resource实现。它也明显支持一个文件或则URL的解决方案。

4.ServletContextResource

这是一个针对ServletContext资源的Resource的实现,在相关的web 应用的根目录中解释出相对的路径。

这个常常支持Strream 和URL的访问方式,但是在一个web应用被扩展和资源保存在文件系统的时候它只允许使用java.io.File的方式来访问。不管它是被扩展还是在文件系统中,或者直接从JAR或者其他的像DB中直接的访问,这个都依赖Servlet容器。

5.InputStreamResource

这个针对InputStream的Resource实现。如果没有指定的Resource实现可用的时候才会被使用。特别是,在其他地方尽可能的使用ByteArrayResource或者其他的Resource实现。

和其他的Resource实现对比而言,这是一个描述已经从isOpen()中反会true的打开的资源。如果你需要在一些地方持有资源描述或者如果你需要多次的读取流的时候,不要使用InputStreamResource.

6.ByteArrayResource

这个是针对字节数组的Resource实现。它针对给定的字节数组创建了一个ByteArrayInputStream。
它在从给定的字节数组中加载内容时很有用的,而且不需要凭借只能使用一次的InputStreamResource。

Spring Resource之内置的Resource实现的更多相关文章

  1. Spring中 @Autowired注解与@Resource注解的区别

    Spring中 @Autowired注解与@Resource注解的区别在Spring 3.X中经常使用到@Autowired和@Resource进行装配.这两个注解的差异在何处???相同点:@Reso ...

  2. Spring中@Autowired注解、@Resource注解的区别 (zz)

    Spring中@Autowired注解.@Resource注解的区别 Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@ ...

  3. Spring中内置的一些工具类

    学习Java的人,或者开发很多项目,都需要使用到Spring 这个框架,这个框架对于java程序员来说.学好spring 就不怕找不到工作.我们时常会写一些工具类,但是有些时候 我们不清楚,我们些的工 ...

  4. 老李分享:持续集成学好jenkins之内置命令

    老李分享:持续集成学好jenkins之内置命令   Jenkins命令调用方式:调用Jenkins命令设置job的描述信息. $JAVA_BIN-jar "$JENKINS_CLI_JAR& ...

  5. zabbix Server 4.0 部署及之内置item使用案例

    zabbix Server 4.0 部署及之内置item使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zabbix组件架构概述(图片摘自网络) 1>.zabbi ...

  6. Spring boot 内置tomcat禁止不安全HTTP方法

    Spring boot 内置tomcat禁止不安全HTTP方法 在tomcat的web.xml中可以配置如下内容,让tomcat禁止不安全的HTTP方法 <security-constraint ...

  7. python设计模式之内置装饰器使用&lpar;四&rpar;

    前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...

  8. spring利用后置处理器初始化bean属性

    spring利用后置处理器初始化bean属性 参考:http://blog.csdn.net/heyutao007/article/details/50326793 @Configurable @En ...

  9. Spring MVC内置支持的4种内容协商方式【享学Spring MVC】

    每篇一句 十个光头九个富,最后一个会砍树 前言 不知你在使用Spring Boot时是否对这样一个现象"诧异"过:同一个接口(同一个URL)在接口报错情况下,若你用rest访问,它 ...

随机推荐

  1. Server Tomcat v7&period;0 Server at localhost was unable to start within 45 seconds 解决方法

    Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires ...

  2. 记VS2013并行编译导致出错的解决过程

    接前一篇,电脑换了新的,系统是64bit的win8系统,先安装了SQLServer2012,再安装VS2010旗舰版,Stop!为什么还是2010?因为2010太经典了,以至于公司的项目还在用它写项目 ...

  3. HS光流算法详解&lt&semi;转载&gt&semi;

    HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...

  4. Convert Date between LocalDateTime

    http://blog.progs.be/542/date-to-java-time Java8 has new date and time classes to “replace” the old ...

  5. jQuery获取JSON格式数据方法

    getJSON方法: jQuery.getJSON(url,data,success(data,status,xhr)) $("button").click(function(){ ...

  6. 【grunt整合版】 30分钟学会使用grunt打包前端代码

    grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...

  7. TimerTask实现定期检查数据库操作

    最近在做一个P2P 的众筹网站,其他的内容还都可以,只是定期检查数库里面的项目是不是到期了,让我费了一些时间,现在写好了,我把它总结下来,以便以后使用.顺便和大家分享一下. Timer可以看成一个定时 ...

  8. Codeforces Round &num;423 &lpar;Div&period; 2&comma; rated&comma; based on VK Cup Finals&rpar; E&period; DNA Evolution 树状数组

    E. DNA Evolution 题目连接: http://codeforces.com/contest/828/problem/E Description Everyone knows that D ...

  9. SVN的Windows和Linux客户端操作详解

    SVN的Windows和Linux客户端操作详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Windows客户端操作 1.安装SVN客户端 a>.去官网下载svn软件 ...

  10. Ireport第一张web项目报表。

    原先项目里面的统计分析报表都是和普通的系统页面一样开发的,SSM架构,从数据库一层一层往前面传数据,最后通过jsp表现出来,这次在领导的建议下使用IReport进行报表开发,果然还是要使用工具啊,社会 ...