@[TOC](第十一章:Spring 资源管理(1))
1.引入动机
• 为什么 Spring 不使用 Java 标准资源管理,而选择重新发明轮子?
• Java 标准资源管理强大,然而扩展复杂,资源存储方式并不统一
• Spring 要自立门户(重要的话,要讲三遍)
• Spring “抄”、“超” 和 “潮”
2.Java 标准资源管理
• Java URL 协议扩展
• 基于 java.net.URLStreamHandlerFactory
• 基于 java.net.URLStreamHandler
• 基于 java.net.URLStreamHandlerFactory 扩展协议
• 基于 java.net.URLStreamHandler 扩展协议
基于 java.net.URLStreamHandler 扩展协议
3.Spring 资源接口

4.Spring 内建 Resource 实现

5.Spring Resource 接口扩展
• 可写资源接口
• org.springframework.core.io.WritableResource
•org.springframework.core.io.FileSystemResource
•org.springframework.core.io.FileUrlResource(@since 5.0.2)
•org.springframework.core.io.PathResource(@since 4.0 & @Deprecated)
• 编码资源接口
• org.springframework.core.io.support.EncodedResource
6.Spring 资源加载器
• Resource 加载器
• org.springframework.core.io.ResourceLoader
• org.springframework.core.io.DefaultResourceLoader
•org.springframework.core.io.FileSystemResourceLoader
•org.springframework.core.io.ClassRelativeResourceLoader
•org.springframework.context.support.AbstractApplicationContext
7.Spring 通配路径资源加载器
• 通配路径 ResourceLoader
• org.springframework.core.io.support.ResourcePatternResolver
• org.springframework.core.io.support.PathMatchingResourcePatternResolve r
• 路径匹配器
• org.springframework.util.PathMatcher
• Ant 模式匹配实现 - org.springframework.util.AntPathMatcher
8.Spring 通配路径资源扩展
• 实现 org.springframework.util.PathMatcher
• 重置 PathMatcher
• PathMatchingResourcePatternResolver#setPathMatcher
9.依赖注入Spring Resource
• 基于 @Value 实现
• 如:
@Value(“classpath:/…”) private Resource resource;
10.依赖注入 ResourceLoader
• 方法一:实现 ResourceLoaderAware 回调
• 方法二:@Autowired 注入 ResourceLoader
• 方法三:注入 ApplicationContext 作为 ResourceLoader
11.面试题精选
1、Spring 配置资源中有哪些常见类型?
答:•XML 资源
•Properties 资源
•YAML 资源
2、请例举不同类型 Spring 配置资源?
答:
• XML 资源
• 普通 Bean Definition XML 配置资源 - *.xml
• Spring Schema 资源 - *.xsd
• Properties 资源
•普通 Properties 格式资源 - *.properties
•Spring Handler 实现类映射文件 - META-INF/spring.handlers
•Spring Schema 资源映射文件 - META-INF/spring.schemas
• YAML 资源
• 普通 YAML 配置资源 - *.yaml 或 *.yml
3、Java 标准资源管理扩展的步骤?
答:
• 简易实现
• 实现 URLStreamHandler 并放置在 sun.net.www.protocol.${protocol}.Handler 包下
• 自定义实现
• 实现 URLStreamHandler
• 添加 -Djava.protocol.handler.pkgs 启动参数,指向 URLStreamHandler 实现类的包下
• 高级实现
• 实现 URLStreamHandlerFactory 并传递到 URL 之中
本文探讨了Spring为何选择自定义资源管理,介绍了Java标准资源管理的扩展过程,重点讲解了SpringResource接口、内置实现、加载器及路径匹配,还涵盖了如何通过依赖注入管理和使用这些资源。
1025

被折叠的 条评论
为什么被折叠?



