`

spring读书笔记:resource接口及resourceLoader资源加载器

阅读更多
   由于jdk所提供的资源访问类不能满足各种底层资源访问需求。因此我们大多选择spring的resource接口来解决这类问题,该接口拥有对应不同资源类型的实现类。
    Resource接口主要方法有:
  1.boolean exists() 判断资源是否存在
  2.boolean ipOpen() 判断资源是否打开
  3.URL getURL()throws IOException 如果底层资源可以表示成URL,返回对应URL对象
  4.File getFile() throws IOException 如果底层资源可以表示成文件,返回对应File对象
  5.InputStream getInputStream() throws IOException 返回资源对应的输入流

  Resource具体实现类:
  ClassPathResource:类路径下的资源,位置在classes路径下
  FileSystemResource:文件系统资源,资源以文件系统路径的方式表示,如:D:/File/conf.xml;
  InputStreamResource:对应一个InputStream的资源
  ServletContextResource:访问web容器上下文中资源的类,负责以相对于web应用根目录的路径加载资源,支持以流和URL的方式访问,。
  UrlResource :用户能够访问任何可以通过URL表示的资源。如http资源,ftp资源。
 
  例如:
public class FileSourceExample {

    public static void main(String[] args) {
    try {
String filePath = "D:/classes/conf/file1.txt";
Resource res1 = new FileSystemResource(filePath);
         //转换文件编码格式
         EncodedResource encRes = new EncodedResource(res1,"UTF-8");
     String content  = FileCopyUtils.copyToString(encRes.getReader());
         Resource res2 = new ClassPathResource("conf/file1.txt");
         Resource res3 = new ServletContextResource(application,"/WEB-INF/classes/conf/file1.txt");
         InputStream ins1 = content.getInputStream();
         InputStream ins2 = res2.getInputStream();
         System.out.println("res1:"+encRes.getFilename());
         System.out.println("res2:"+res2.getFilename());           
    } catch (IOException e) {
e.printStackTrace();
}
}
}

资源加载器:ResourceLoader
Spring定义了一套资源加载的接口,并提供了实现类
Resourceloader接口的getResource(String location)方法
ResourcePatternResolver接口,定义新的接口方法:getResources(String locationPattern)
  PathMatchingResourcePatternResolver类

例如:
public class PatternResolverTest {
  public static void main(String[] args) throws Throwable{  ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource resources[] =resolver.getResources("classpath*:com/baobaotao/**/*.xml");
for(Resource resource:resources){
System.out.println(resource.getDescription());
}
}
}
分享到:
评论

相关推荐

    Spring实战之ResourceLoader接口资源加载用法示例

    主要介绍了Spring实战之ResourceLoader接口资源加载用法,结合实例形式分析了Spring使用ResourceLoader接口加载资源的相关配置与使用技巧,需要的朋友可以参考下

    resource-loader:从JAR中获取文件或加载共享库很困难。 我们变得很容易

    资源加载器即使是从JAR内部或JAR外部进行加载,Resource Loader也为您提供了加载resource文件的功能。 资源加载器还支持通过SharedLibraryLoader加载共享库。安装这是在基于Gradle的项目中安装库的方法。 // Top-...

    Spring 2.0 开发参考手册

    3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...

    spring源代码

    //只加载一个绝对匹配Resource,且通过ResourceLoader.getResource进行加载 Resource[] resources = resolver.getResources("classpath:META-INF/INDEX.LIST"); Assert.assertEquals(1, resources.length); //...

    Spring中文帮助文档

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    spring chm文档

    3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

    Spring API

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    blink.java9.resource:从Java9模块加载资源

    ~/Spikespaces/java9/resource $ javac -d target/classes src/main/java/it/nipe/java9/ResourceLoader.java 建造 ~/Spikespaces/java9/resource $ jar --create --file target/javanove.jar --main-class it.nipe....

    java7源码-coder-tools:开发者的工具箱,包含各种第三方类库,示例

    coder-tools是程序员对一些新类库、新技术、新特性研究的笔记,为了让您更快更容易对这些新东西入手,时间久了可以达到温故而知新 jvm-library design-pattern 包含23种设计模式 structure-arithmetic 包含大量各类...

    Springboot项目打war包docker包找不到resource下静态资源的解决方案

    今天小编就为大家分享一篇关于Springboot项目打war包docker包找不到resource下静态资源的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    update-resourceloader-config-plugin:使用webpack入口点的前端模块更新mediawiki的resourceloader配置的extension.json

    UpdateResourceLoaderConfigPlugin Webpack插件,用于将ResourceLoader前端模块自动添加到extension.json 。 它会提取国际化标签和需要mobileFrontend模块, mw.mobileFrontend.require 。 npm install --save-dev ...

    Spring Boot读取resources目录文件方法详解

    主要介绍了Spring Boot读取resources目录文件方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    SPRING API 2.0.CHM

    ResourceLoader ResourceLoaderAware ResourceMapFactoryBean ResourceOverridingShadowingClassLoader ResourcePatternResolver ResourcePatternUtils ResourceScriptSource ResourceServlet ResourceUtils...

    spring-framework-reference-4.1.2

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    webx3框架指南PDF教程附学习Demo

    这个优势主要是针对阿里巴巴及属下网站而言。因为Webx在阿里巴巴和淘宝用了很多年。对于这种超大访问量的电子商务网站,Webx经受了考验,被证明是成熟可靠的。 开放和扩展性 • 对Spring的直接支持 —— Spring是...

    DVAssetLoaderDelegate:用于缓存AVURLAsset的加载程序委托

    - (void)dvAssetLoaderDelegate:(DVAssetLoaderDelegate *)resourceLoader didLoadData:(NSData *)data forURL:(NSURL *)url; 对于其他方法,请检查 。 用法 简单方法(将AVURLAsset子类化) 创建DVURLAsset 。 ...

    spring-framework-reference4.1.4

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    offline-http-sync

    如果资源不可用,它将从缓存中加载文件。 这用于资源的可用性比其一致性更重要的情况。 用法 通过http加载一些资源,保存到缓存,如果http资源不可用,则仅从缓存加载。 var sl = require('offline-http-sync'); ...

    velocity-engine-core-2.0.jar

    // ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "file"); // 按文件加载 // ve.init(); // Template t = ve.getTemplate("src/velocity/hellovelocity.vm"); ve.setProperty(RuntimeConstants....

Global site tag (gtag.js) - Google Analytics