• 欢迎来到Compiler网站,如果对网站内容感兴趣或者帮助到你,请为文章点赞,谢谢!

Srping 资源管理

java 奔跑的蜗牛 5个月前 (04-26) 115次浏览 已收录 0个评论

引入动机

  • 为什么Spring不适用Java标准资源管理,而选择重新发明轮子

    • Java标准资源管理很强大,然而扩展复杂,资源存储方式并不统一

    • Spring要自立门户

    • Spring ,

Java标准资源管理

  • Java标准资源定位

职责 说明
面向资源 文件系统,artifactory(jar, war, ear文件)以及远程资源
API整合 java.lang.ClassLoader#getResource, java.io.File 或 java.net.URL
资源定位 java.net.URL或java.net.URI
面向流式存储 java.net.URLConnection
协议扩展 java.net.URLStreamHandler或java.net.URLStreamHandlerFactory

Java URL协议扩展

  • 基于java.net.URLStreamHandlerFactory

  • 基于java.net.URLStreamHandler

基于java.net.URLStreamHandler扩展协议

Spring 资源接口

  • 资源接口

类型 接口
输入流 org.springframework.core.io.InputStreamSource
只读资源 org.springframework.core.io.Resource
可写资源 org.springframework.core.io.WritableResource
编码资源 org.springframework.core.io.support.EncodedResource
上下文资源 org.springframework.core.io.ContextResource

Spring 内建Resource实现

  • 内建实现

资源来源 资源协议 实现类
Bean定义 BeanDefinitionResource
数组 ByteArrayResource
类路径 classpath:/ ClassPathResource
文件系统 file:/ FileSystemResource
URL URL支持的协议 UrlResource
ServletContext ServletContextResource

Spring Resource接口扩展

  • 可写资源接口

    • WritableResource

      • FileSystemResource

      • FileUrlResource(@since 5.0.2)

      • PathResource(@since 4.0 & @Deprecated)

  • 编码资源接口

    • EncodedResource

Spring 资源加载器

  • Resource加载器

    • ResourceLoader

      • DefaultResourceLoader

        • FileSystemResourceLoader

        • ClassRelativeResourceLoader

        • AbstractApplicationContext

Spring 统配路径资源加载器

  • 通配路径 ResourceLoader

    • ResourcePatternResolver

      • PathMatchingResourcePatternResolver

  • 路径匹配器

    • PathMatcher

      • AntPathMathcher – Ant模式匹配实现

依赖注入Spring Resource

  • 基于@Value实现

    • 如:

      • @Value("classpath:/...")

      • private Resource resource;

依赖注入ResourceLoader

  • 方法一: 实现ResourceLoaderAware回调

  • 方法二: 实现@Autowired注入ResourceLoader

  • 方法三: 注入ApplicationContext作为ResourceLoader

Java标准资源管理扩展的步骤

  • 简易实现

    • 实现URLStreamHandler并放置在sun.net.protocol.${protocol}.Handler包下

  • 自定义实现

    • 实现URLStreamHandler

    • 添加-Djava.protocol.handler.pkgs启动参数,执行URLStreamHandler实现类的包下

  • 高级实现

    • 实现URLStreamHandlerFactory并传递到URL之中


Compiler编程笔记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Srping 资源管理
喜欢 (1)
[阳光路上]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址