`

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 Framework 提供了 ResourceLoader 接口来加载资源,资源可以是文件、URL、classpath 等。ResourceLoader 接口提供了多种资源加载方式,例如从文件系统、...

    spring Resource管理详解

    1. 使用ResourceLoader:Spring容器提供了ResourceLoader,它可以方便地创建和管理Resource实例,避免直接硬编码资源路径。 2. 避免使用绝对路径:尽可能使用相对路径来创建Resource对象,这样更有利于应用的移植性...

    spring-resource

    `Resource`接口是Spring框架提供的一种抽象层,用于封装资源访问,它可以是本地文件系统中的文件,也可以是URL、类路径下的资源,甚至是JDBC数据源。通过`Resource`接口,开发者可以统一地处理不同来源的资源,提高...

    spring3.x的读书笔记-2

    在Spring框架中,Resource接口是核心组件之一,用于表示应用程序中的资源,比如文件、网络连接、输入/输出流等。在上述代码示例中,我们可以看到两种Resource的实例化方式:FileSystemResource和ClassPathResource。...

    Spring各种回调接口[定义].pdf

    1. **BeanClassLoaderAware**:这个接口使得Bean能够获取加载它的类加载器。当Bean实现此接口并容器实例化Bean时,`setBeanClassLoader(ClassLoader classLoader)`方法会被调用,传入负责加载该Bean的ClassLoader...

    mustache-maven-plugin-1.1.zip

    - **增强的事务管理**:resource4j的流处理与Spring的事务管理相结合,可以实现更细粒度的事务控制。 - **统一资源处理**:将所有资源操作通过resource4j进行,确保一致性和可维护性。 3. **集成步骤** - **...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版).pdf

    2. **Spring Context**:建立在核心容器基础上,添加了对国际化、事件传播、资源加载以及事务管理的支持。 3. **Spring AOP**:面向切面编程的支持,允许以声明的方式将切面加入到业务逻辑中。 4. **Spring DAO**:...

    spring资源访问

    通过`Resource`接口及其多个实现类,Spring简化了资源访问的过程,并且支持多种不同的资源类型,从而使得应用更加健壮和易于维护。此外,策略模式的运用也使得资源访问方式的选择变得更加灵活。

    spring中的资源访问宝典

    本文将详细介绍Spring如何通过`Resource`接口及其实现类来简化资源的访问。 首先,传统的资源访问方式通常依赖于`java.net.URL`和文件I/O操作,这种方式不仅代码复杂,而且效率较低。例如,在`URLTest`类中,我们...

    16 Resource的前生今世慕课专栏1

    Spring通过`ResourceLoader`接口来加载资源,而`ApplicationContext`实现了`ResourceLoader`,因此它具备加载资源的能力。当遇到如`classpath:`或`file:`的前缀时,Spring会解析这些前缀并使用相应的加载策略来获取...

    Spring实战之ResourceLoaderAware加载资源用法示例

    ResourceLoader接口是Spring框架中一个重要的接口,用于提供对资源的加载和访问能力。该接口提供了多种方法,例如getResource(String location)、getClassLoader()等,用于加载和访问不同的资源。 三、使用...

    Springboot访问Resource下的文件.docx

    - Spring 提供了一个 `ResourceLoader` 接口,可以通过它来获取资源。 - 示例代码: ```java ResourceLoader resourceLoader = new DefaultResourceLoader(); Resource resource = resourceLoader.getResource...

    jar包中类的加载及jar中资源的使用

    4. Spring框架:Spring框架的`Resource`接口和`ResourceLoader`类提供了高级的资源操作,支持从不同来源(包括`jar`包)加载资源。 5. 配置文件:在`jar`包中常包含配置文件,如`application.properties`,可以使用...

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

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

    Spring Boot项目打成jar包后,下载resources目录下文件为空的demo

    - **正确设置路径**:在获取或下载资源时,应使用`ClasspathResource`或`ResourceLoader`来获取正确的类路径资源。例如: ```java Resource resource = new ClassPathResource("static/filename.ext"); ``` - *...

    spring学习笔记

    - **资源加载**:通过 `ResourceLoader` 接口提供对资源文件的加载能力,例如图片、音频文件等。 - **事件通知**:通过 `ApplicationEventPublisher` 接口实现容器事件的发布,例如 Bean 初始化完成、容器关闭等事件...

    Spring5.1中文参考指南.pdf

    - **ResourceLoader**:用于加载资源。 - **ResourceLoaderAware接口**:允许Bean获取到ResourceLoader实例。 - **资源作为依赖**:如何将资源注入到Bean中。 - **验证、数据绑定与类型转换** - **使用Spring ...

    spring读取jar中的配置文件

    此外,Spring还提供了`Resource`接口,允许我们直接访问JAR内的资源。例如,我们可以这样做: ```java @Autowired private ResourceLoader resourceLoader; public void readConfigFile() throws IOException { ...

Global site tag (gtag.js) - Google Analytics