org.springframework.core.io

## 类 DefaultResourceLoader

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

- 所有已实现的接口:
    ResourceLoader
  直接已知子类:
    ClassRelativeResourceLoader, FileSystemResourceLoader

      public class DefaultResourceLoader
      extends Object
      implements ResourceLoader

  Default implementation of the `ResourceLoader` interface. Used by `ResourceEditor`, and serves as base class for `org.springframework.context.support.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.

  从以下版本开始:
    10.03.2004
  作者:
    Juergen Hoeller
  另请参阅:
    `FileSystemResourceLoader`, `org.springframework.context.support.ClassPathXmlApplicationContext`

- - ### 嵌套类概要

    嵌套类
    限定符和类型 | 类和说明
    --- | ---
    `protected static class` | `DefaultResourceLoader.ClassPathContextResource` ClassPathResource that explicitly expresses a context-relative path through implementing the ContextResource interface.

  - ### 字段概要

    - ### 从接口继承的字段 org.springframework.core.io.ResourceLoader

      `CLASSPATH_URL_PREFIX`

  - ### 构造器概要

    构造器
    构造器和说明
    `DefaultResourceLoader()` Create a new DefaultResourceLoader.
    `DefaultResourceLoader(ClassLoader classLoader)` Create a new DefaultResourceLoader.

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | `addProtocolResolver(ProtocolResolver resolver)` Register the given resolver with this resource loader, allowing for additional protocols to be handled.
    `void` | `clearResourceCaches()` Clear all resource caches in this resource loader.
    `ClassLoader` | `getClassLoader()` Return the ClassLoader to load class path resources with.
    `Collection<ProtocolResolver>` | `getProtocolResolvers()` Return the collection of currently registered protocol resolvers, allowing for introspection as well as modification.
    `Resource` | `getResource(String location)` Return a Resource handle for the specified resource location.
    `protected Resource` | `getResourceByPath(String path)` Return a Resource handle for the resource at the given path.
    `<T> Map<Resource,T>` | `getResourceCache(Class<T> valueType)` Obtain a cache for the given value type, keyed by `Resource`.
    `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.

    - ### 从类继承的方法 java.lang.Object

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

- - ### 构造器详细资料

    - #### 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.

      另请参阅:
        `Thread.getContextClassLoader()`

    - #### DefaultResourceLoader

          public DefaultResourceLoader(@Nullable
                                       ClassLoader classLoader)

      Create a new DefaultResourceLoader.
      参数:
        `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

  - ### 方法详细资料

    - #### setClassLoader

          public void setClassLoader(@Nullable
                                     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

          @Nullable
          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.

      指定者:
        `getClassLoader` 在接口中 `ResourceLoader`
      返回:
        the ClassLoader (only `null` if even the system ClassLoader isn't accessible)
      另请参阅:
        `ClassPathResource`

    - #### addProtocolResolver

          public void addProtocolResolver(ProtocolResolver resolver)

      Register the given resolver with this resource loader, allowing for additional protocols to be handled.

      Any such resolver will be invoked ahead of this loader's standard resolution rules. It may therefore also override any default rules.

      从以下版本开始:
        4.3
      另请参阅:
        `getProtocolResolvers()`

    - #### getProtocolResolvers

          public Collection<ProtocolResolver> getProtocolResolvers()

      Return the collection of currently registered protocol resolvers, allowing for introspection as well as modification.
      从以下版本开始:
        4.3

    - #### getResourceCache

          public <T> Map<Resource,T> getResourceCache(Class<T> valueType)

      Obtain a cache for the given value type, keyed by `Resource`.
      参数:
        `valueType` - the value type, e.g. an ASM `MetadataReader`
      返回:
        the cache `Map`, shared at the `ResourceLoader` level
      从以下版本开始:
        5.0

    - #### clearResourceCaches

          public void clearResourceCaches()

      Clear all resource caches in this resource loader.
      从以下版本开始:
        5.0
      另请参阅:
        `getResourceCache(java.lang.Class<T>)`

    - #### getResource

          public Resource getResource(String location)

      从接口复制的说明: `ResourceLoader`
      Return a Resource handle for the specified resource location.

      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.

      指定者:
        `getResource` 在接口中 `ResourceLoader`
      参数:
        `location` - the resource location
      返回:
        a corresponding Resource handle (never `null`)
      另请参阅:
        `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.

      参数:
        `path` - the path to the resource
      返回:
        the corresponding Resource handle
      另请参阅:
        `ClassPathResource`, `org.springframework.context.support.FileSystemXmlApplicationContext#getResourceByPath`, `org.springframework.web.context.support.XmlWebApplicationContext#getResourceByPath`