org.springframework.core.io

## Class DefaultResourceLoader

- java.lang.Object
- - org.springframework.core.io.DefaultResourceLoader

- All Implemented Interfaces:
    ResourceLoader
  Direct Known Subclasses:
    AbstractApplicationContext, ClassRelativeResourceLoader, FileSystemResourceLoader, PortletContextResourceLoader, ServletContextResourceLoader

      public class DefaultResourceLoader
      extends Object
      implements ResourceLoader

  Default implementation of the `ResourceLoader` interface. Used by `ResourceEditor`, and serves as base class for `AbstractApplicationContext`. Can also be used standalone.

  Will return a `UrlResource` if the location value is a URL, and a `ClassPathResource` if it is a non-URL path or a "classpath:" pseudo-URL.

  Since:
    10.03.2004
  Author:
    Juergen Hoeller
  See Also:
    `FileSystemResourceLoader`, `ClassPathXmlApplicationContext`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `DefaultResourceLoader.ClassPathContextResource` ClassPathResource that explicitly expresses a context-relative path through implementing the ContextResource interface.

  - ### Field Summary

    - ### Fields inherited from interface org.springframework.core.io.ResourceLoader

      `CLASSPATH_URL_PREFIX`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultResourceLoader()` Create a new DefaultResourceLoader.
    `DefaultResourceLoader(ClassLoader classLoader)` Create a new DefaultResourceLoader.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ClassLoader` | `getClassLoader()` Return the ClassLoader to load class path resources with.
    `Resource` | `getResource(String location)` Return a Resource handle for the specified resource.
    `protected Resource` | `getResourceByPath(String path)` Return a Resource handle for the resource at the given path.
    `void` | `setClassLoader(ClassLoader classLoader)` Specify the ClassLoader to load class path resources with, or `null` for using the thread context class loader at the time of actual resource access.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DefaultResourceLoader

          public DefaultResourceLoader()

      Create a new DefaultResourceLoader.

      ClassLoader access will happen using the thread context class loader at the time of this ResourceLoader's initialization.

      See Also:
        `Thread.getContextClassLoader()`

    - #### DefaultResourceLoader

          public DefaultResourceLoader(ClassLoader classLoader)

      Create a new DefaultResourceLoader.
      Parameters:
        `classLoader` - the ClassLoader to load class path resources with, or `null` for using the thread context class loader at the time of actual resource access

  - ### Method Detail

    - #### setClassLoader

          public void setClassLoader(ClassLoader classLoader)

      Specify the ClassLoader to load class path resources with, or `null` for using the thread context class loader at the time of actual resource access.

      The default is that ClassLoader access will happen using the thread context class loader at the time of this ResourceLoader's initialization.

    - #### getClassLoader

          public ClassLoader getClassLoader()

      Return the ClassLoader to load class path resources with.

      Will get passed to ClassPathResource's constructor for all ClassPathResource objects created by this resource loader.

      Specified by:
        `getClassLoader` in interface `ResourceLoader`
      Returns:
        the ClassLoader (never `null`)
      See Also:
        `ClassPathResource`

    - #### getResource

          public Resource getResource(String location)

      Description copied from interface: `ResourceLoader`
      Return a Resource handle for the specified resource. The handle should always be a reusable resource descriptor, allowing for multiple `InputStreamSource.getInputStream()` calls.

      - Must support fully qualified URLs, e.g. "file:C:/test.dat".
      - Must support classpath pseudo-URLs, e.g. "classpath:test.dat".
      - Should support relative file paths, e.g. "WEB-INF/test.dat". (This will be implementation-specific, typically provided by an ApplicationContext implementation.)

      Note that a Resource handle does not imply an existing resource; you need to invoke `Resource.exists()` to check for existence.

      Specified by:
        `getResource` in interface `ResourceLoader`
      Parameters:
        `location` - the resource location
      Returns:
        a corresponding Resource handle
      See Also:
        `ResourceLoader.CLASSPATH_URL_PREFIX`, `Resource.exists()`, `InputStreamSource.getInputStream()`

    - #### getResourceByPath

          protected Resource getResourceByPath(String path)

      Return a Resource handle for the resource at the given path.

      The default implementation supports class path locations. This should be appropriate for standalone implementations but can be overridden, e.g. for implementations targeted at a Servlet container.

      Parameters:
        `path` - the path to the resource
      Returns:
        the corresponding Resource handle
      See Also:
        `ClassPathResource`, `FileSystemXmlApplicationContext.getResourceByPath(java.lang.String)`, `AbstractRefreshableWebApplicationContext.getResourceByPath(java.lang.String)`