该接口拥有对不同资源类型的实现类
boolean exists() 资源是否存在
boolean isOpen() 资源是否打开
URL getURL() 如果底层资源可以表示成URL,则该方法返回对应的URL对象
File getFile() 如果底层资源对应一个文件,则该方法返回对应的File对象
InputStream getInputStream() 返回资源对应的输入流

WritableResource: 可写资源接口,有两个实现类FileSystemResource和PathResource
ByteArrayResource: 二进制数组标识的资源,二进制数组资源可以在内存中通过程序构造
ClassPathResource: 类路径下的资源,资源以相对于类路径的方式标识
FileSystemResource: 文件系统资源,资源以文件系统路径的方式表示,如D:/conf/bean.xml
InputStreamResource: 以输入流返回表示的资源
ServletContextResource: 以访问Web容器上下文中的资源而设计的类,负责以相对于Web应用根目录的路径加载资源。它支持以流和URL的方式访问,在WAR解包的情况下,也可以通过File方式访问。该累还可以直接从JAR包中访问资源
UrlResource: URL封装了java.net.URL,它使用户能够访问任何可以通过URL表示的资源,如文件系统的资源、HTTP资源、FTP资源等
PathResource: Spring4.0提供的读取资源文件的新类。Path封装了java.net.URL、java.nio.file.Path、文件系统资源,它使用户能够访问任何可以通过URL、Path、系统文件路径表示的资源
 
有了这个抽象的资源后,就可以将Spring的配置信息放置在任何地方,只要最终可以通过Resource接口返回配置信息即可
 
资源加载时默认采用系统编码读取资源内容,如果想更换编码格式,可以通过EncodeResource对资源进行编码,以保证资源内容操作的正确性
Resource res = new ClassPathResource("conf/file.txt");
EncodeResource encRes = new EncodedResource(res,"UTF-8");
 
资源地址表达式:

"classpath:"只会在第一个加载的包路径下查找,而"classpath*":会扫描所有这些JAR包及路径下出现的com.smart类路径
 
资源加载器:
Spring定义了一套资源加载的接口,并提供了实现类

ResourceLoader接口仅有一个getResource(String location)方法,可以根据一个资源地质加载文件资源。不过资源地址仅支持带资源类型前缀的表达式。PathMatchingResourcePatternResolver是Spring提供的标准实现类
 
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resourcePatternResolver.getResources("classpath*:com/wjc/ccf/**");
Assert.notNull(resources);
for (Resource resource : resources) {
    System.out.println(resource.getDescription());
}
 
*用Resource操作文件时,如果资源配置文件在项目发布时会被打包到JAR中,那么不能使用Resource.getFile()方法,应该使用getInputStream()方法

最新文章

  1. tomcat启动的了,但是加载项目失败
  2. xml与datatable类型互换
  3. 使用Visual Studio下自带的SQL Server Express
  4. 20150225--ASP.NET基础(2)
  5. Tomcat源码学习记录--web服务器初步认识
  6. 用SWF来代替传统的帧动画
  7. ADO.net参数化查询陷阱
  8. JSON基础(Java)
  9. sqlite 中的分页语句
  10. Cocos Creator学习六:加载/释放图片资源
  11. win32gui.Findwindow(parm1,parm2)查找窗口的句柄方法
  12. 『Numpy』np.meshgrid
  13. js中关于Blob对象的介绍与使用
  14. 《DSP using MATLAB》Problem 6.15
  15. python ftp文件夹文件递归上传推送
  16. Windows 下安装redis 并且设置开机自动启动的过程.
  17. 在此处打开OpenPowershellHere右键 在此处打开命令窗口右键
  18. Reading CheckBoxes and Radio Buttons
  19. 凡人视角C++之string(上)
  20. windows 实用小工具(截图、进程管理)

热门文章

  1. Android框架之高速开发框架xUtil
  2. 【T^T】【周赛】第一周周赛——欢迎16级的新同学
  3. 杂项-Java:FreeMarker
  4. Tool:Adobe Photoshop
  5. JSP-Runoob:JSP简介
  6. Android下载资源
  7. fck 属性配置大全
  8. CodeForces 731A Night at the Museum (水题)
  9. [BZOJ3224/Tyvj1728]普通平衡树
  10. WebSphere设置会话超时时间