SPRING04_核心组件接口分析Resource、具体实现类、ResourceLoader资源读取器及策略模式(上)

简介: SPRING04_核心组件接口分析Resource、具体实现类、ResourceLoader资源读取器及策略模式(上)

接下来我们将对SPRING中的核心接口进行一一详解


①. 核心组件接口分析Resource


  • ①. 在Spring给我们暴露对外的操作里面,要么写XML要么写注解,第一个进入我们视线就是Resource(资源)


微信图片_20220108224453.png


微信图片_20220108224509.png


  • ②. 下面将研究下这个Spring底层是如何定义这个Resource(资源)


②. Resource(资源)是个什么?


  • ①. 如何分析这个组件是个什么东西?可以在idea里面使用快捷键Ctrl+f12,看这个组件有什么方法就行了


微信图片_20220108224532.png


②. 按照类名Resource,它叫资源,按照方法它无外乎就来看看这个资源文件(getFile()),包括这个资源的路径在哪(getURL()),能不能打开(isOpen()),能不能读取(isReadable()),如果能读取就给资源准备一个通道(readableChannel() 这个是用nio来做的)


③. 这是Spring家定义的一个Resource资源接口,定义了一些能够快速的读取资源的办法


③. 关于Resource的具体实现类


  • ①. 这个Resource资源接口有了以后,看实现类就会发现 Spring它的这个资源接口暴露了很多东西


微信图片_20220108224552.png


②. ContextResource

(ContextResource.ClassRelativeContextResource):能从相对路径获取资源,只要是ContextResource这一块都是跟Web相关的,如果此时是一个Web项目,就可以从Web项目里面按照相对路径来获取资源)


③. HttpResource

(Spring的资源也能从HTTP里面去获取资源,也就是说可以请求的是远程服务器去获取资源,请求远程的资源就会被封装成HttpResource)


④. WritableResource

FileSystemResource:资源不仅能够存在类路径下,还能存到文件系统里面,比如我们的电脑硬盘

FileUrlResource:这里可以获取任意的位置,可以获取网络,磁盘等的资源

PathResource:有指定的一些路径,比如写过的classpath:xxxxx 地址


⑤. Spring能够加载资源的方式有很多。每一种不同的资源自然而然就对应资源下的一些接口。Spring暴露出来的Resource资源接口,所有的东西都是一个资源


相关文章
|
3月前
|
智能设计 Java 测试技术
Spring中最大化@Lazy注解,实现资源高效利用
本文深入探讨了 Spring 框架中的 `@Lazy` 注解,介绍了其在资源管理和性能优化中的作用。通过延迟初始化 Bean,`@Lazy` 可显著提升应用启动速度,合理利用系统资源,并增强对 Bean 生命周期的控制。文章还分析了 `@Lazy` 的工作机制、使用场景、最佳实践以及常见陷阱与解决方案,帮助开发者更高效地构建可扩展、高性能的 Spring 应用程序。
156 0
Spring中最大化@Lazy注解,实现资源高效利用
|
XML Java 数据格式
探索Spring之利剑:ApplicationContext接口
本文深入介绍了Spring框架中的核心接口ApplicationContext,解释了其作为应用容器的功能,包括事件发布、国际化支持等,并通过基于XML和注解的配置示例展示了如何使用ApplicationContext管理Bean实例。
557 6
|
12月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
577 73
|
自然语言处理 JavaScript Java
Spring 实现 3 种异步流式接口,干掉接口超时烦恼
本文介绍了处理耗时接口的几种异步流式技术,包括 `ResponseBodyEmitter`、`SseEmitter` 和 `StreamingResponseBody`。这些工具可在执行耗时操作时不断向客户端响应处理结果,提升用户体验和系统性能。`ResponseBodyEmitter` 适用于动态生成内容场景,如文件上传进度;`SseEmitter` 用于实时消息推送,如状态更新;`StreamingResponseBody` 则适合大数据量传输,避免内存溢出。文中提供了具体示例和 GitHub 地址,帮助读者更好地理解和应用这些技术。
2384 121
|
8月前
|
前端开发 IDE Java
Spring MVC 中因导入错误的 Model 类报错问题解析
在 Spring MVC 或 Spring Boot 开发中,若导入错误的 `Model` 类(如 `ch.qos.logback.core.model.Model`),会导致无法解析 `addAttribute` 方法的错误。正确类应为 `org.springframework.ui.Model`。此问题通常因 IDE 自动导入错误类引起。解决方法包括:删除错误导入、添加正确包路径、验证依赖及清理缓存。确保代码中正确使用 Spring 提供的 `Model` 接口以实现前后端数据传递。
271 0
|
12月前
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
261 10
|
存储 NoSQL Java
Spring Boot项目中使用Redis实现接口幂等性的方案
通过上述方法,可以有效地在Spring Boot项目中利用Redis实现接口幂等性,既保证了接口操作的安全性,又提高了系统的可靠性。
488 0
|
5月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
965 0
|
6月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
715 0