Spring 框架文档之核心技术—— Resource

简介: Spring 通过 Resource 对底层资源进行统一访问。 其实现类有 ClassPathResource、FileSystemResource、UrlResource、ByteArrayResource、ServletContextResource 和 InputStreamResource。

Resource

Resource 接口定义

public interface Resource extends InputStreamSource {
    /**
     * 返回此资源的 URL 句柄
     */
    URL getURL() throws IOException;

    /**
     * 返回此资源的 URI 句柄
     */
    URI getURI() throws IOException;

    /**
     * 返回此资源的 File 句柄
     */
    File getFile() throws IOException;

    /**
     * 创建此资源的关联资源
     */
    Resource createRelative(String relativePath) throws IOException;
}

public interface InputStreamSource {
    /**
     * 返回底层资源内容的 InputStream
     */
    InputStream getInputStream() throws IOException;
}

内置 Resource 实现者

  • UrlResource —— 封装 java.net.URL,用于访问通过URL访问的任何对象,例如 file:http:ftp:
  • ClassPathResource —— 使用线程上下文类加载器、给定的类加载器或给定的类从类路径加载资源。如 classpath:
  • FileSystemResource —— 从文件系统加载资源
  • ServletContextResource —— 从 Web 应用根目录的相对路径中加载资源,支持 URL、流、File(资源位于文件系统)访问
  • InputStreamResource —— 在没有特定的资源实现时使用
  • ByteArrayResource —— 从任何给定的字节数组加载资源

ResourceLoader

  • 返回资源类型确认
//对于 ClassPathXmlApplicationContext, 返回 ClassPathResource
//对于 FileSystemXmlApplicationContext, 返回 FileSystemResource
//对于 WebApplicationContext, 返回 ServletContextResource
Resource template = ctx.getResource("some/resource/path/myTemplate.txt");

//指定 classpath:,返回 ClassPathResource
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");

//指定 file:、http:,返回 UrlResource
Resource template = ctx.getResource("file:///some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("https://myhost.com/resource/path/myTemplate.txt");

与 ApplicationContext 协作

ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");

//注意:FileSystemXmlApplicationContext 强制将 FileSystemResource 路径当作相对路径
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");

//如要使用绝对路径,推荐使用 file: 形式的 UrlResource
ApplicationContext ctx = new FileSystemXmlApplicationContext("file:///conf/context.xml");
相关文章
|
8天前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
24 0
|
17天前
|
缓存 Java Spring
Spring 框架中 Bean 的生命周期
Spring 框架中 Bean 的生命周期
29 1
|
1月前
|
开发框架 安全 Java
Spring 框架:企业级应用开发的强大工具
在当今数字化时代,企业级应用开发的需求日益增长。为了满足这一需求,开发者们需要一款功能强大、易于使用的开发框架。Spring 框架作为 Java 领域的领先者,为企业级应用开发提供了全面的解决方案。本文将深入探讨 Spring 框架的各个方面,包括其历史、核心模块、优势以及应用场景。
23 0
|
1月前
|
存储 Java 数据库
|
1月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
2月前
|
缓存 安全 Java
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
|
1月前
|
Java 数据库连接 API
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
47 0
|
2天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
22 2
|
1月前
|
存储 安全 Java
全面探索Spring框架中的事件处理机制
在现代应用程序中,各个组件之间的通信是至关重要的。想象一下,你的应用程序中的各个模块像是一个巨大的交响乐团,每个模块都是一位音乐家,而Spring事件机制就像是指挥家,将所有音乐家协调得天衣无缝。这种松耦合的通信方式使你的应用程序更加灵活、可维护,而且能够轻松应对变化。现在,让我们进入这个令人兴奋的音乐厅,探索Spring事件的世界。
|
1月前
|
Cloud Native Java Docker
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用