引入冬季
Java标准资源管理
  强大
  |面向资源|文件系统、artifact(Jar、War、ear)、远程资源(HTTP/FTP)|
  |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|
  扩展复杂

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

Spring内建Resource实现
|Bean 定义|无|org.springframework.beans.factory.support.BeanDefinitionResource|
|字节码|无|org.springframework.core.io.ByteArrayResource|
|类路径|classpath:/|org.springframework.core.io.ClassPathResource|
|文件系统|file:/|org.springframework.core.io.FileSystemResource|
|URL|URL支持的协议|org.springframework.core.io.UrlResource|
|ServletContext|无|org.springframework.web.context.support.ServletContextResource|
Spring Resource 接口扩展
Spring 资源加载器
- Resource 加载器
- org.springframework.core.io.ResourceLoader
- org.springframewor.core.io.DefaultResourceLoader
- org.springframework.core.io.FileSystemResourceLoader
 - org.springframework.core.io.ClassRelativeResourceLoader
 - org.springframework.context.support.AbstractapplicationContext
 
 
 - org.springframewor.core.io.DefaultResourceLoader
 
 - org.springframework.core.io.ResourceLoader
 
Spring 通配路径资源加载器
- 通配路径ResourceLoader
- org.springframework.core.io.support.ResourcePatternResolver
- org.springframework.core.io.support.PathMatchingResourcePatternResolver
 
 
 - org.springframework.core.io.support.ResourcePatternResolver
 - 路径匹配起
- org.springframework.util.PathMatcher
- Ant模式匹配实现 - org.springframework.util.AntPathMatcher
 
 
 - org.springframework.util.PathMatcher
 
Spring 通配路径资源扩展
依赖注入 Spring Resource
 @Value(“classpath:/…”)
 private Resource resource;
依赖注入 ResourceLoader
- 实现 ResourceLoaderAware 回调
 - @Autowire 注入 ResourceLoader
 - 注入ApplicationContext 作为 ResourceLoader
 
Java 标准资源管理扩展
- 实现URLStreamhandler, 并放置在 sun.net.www.protocal.${protocal}.Handler 下
 
1  | public class XURLConnection extends URLConnection{  | 
1  | public class Handler extends URLStreamHandler{  | 
1  | URL url = new URL("x:///META-INF/default.properties");  | 
实现URLStreamHandler, 添加 -Djava.protocal.handler.pkgs 启动参数,指向URLStreamHandler 实现类的包
实现URLStreamHandlerFactory 并传递到URL之中