Class DefaultResourceLoader

java.lang.Object
org.springframework.core.io.DefaultResourceLoader
All Implemented Interfaces:
ResourceLoader
Direct Known Subclasses:
AbstractApplicationContext, ClassRelativeResourceLoader, FileSystemResourceLoader, 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:
  • Constructor Details

    • DefaultResourceLoader

      public DefaultResourceLoader()
      Create a new DefaultResourceLoader.

      ClassLoader access will happen using the thread context class loader at the time of actual resource access (since 5.3). For more control, pass a specific ClassLoader to DefaultResourceLoader(ClassLoader).

      See Also:
    • DefaultResourceLoader

      public DefaultResourceLoader(@Nullable 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 Details

    • 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 actual resource access (since 5.3).

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

      Specified by:
      getClassLoader in interface ResourceLoader
      Returns:
      the ClassLoader (only null if even the system ClassLoader isn't accessible)
      See Also:
    • 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.

      Since:
      4.3
      See Also:
    • getProtocolResolvers

      public Collection<ProtocolResolver> getProtocolResolvers()
      Return the collection of currently registered protocol resolvers, allowing for introspection as well as modification.
      Since:
      4.3
      See Also:
    • getResourceCache

      public <T> Map<Resource,T> getResourceCache(Class<T> valueType)
      Obtain a cache for the given value type, keyed by Resource.
      Parameters:
      valueType - the value type, for example, an ASM MetadataReader
      Returns:
      the cache Map, shared at the ResourceLoader level
      Since:
      5.0
    • clearResourceCaches

      public void clearResourceCaches()
      Clear all resource caches in this resource loader.
      Since:
      5.0
      See Also:
    • getResource

      public Resource getResource(String location)
      Description copied from interface: 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, for example, "file:C:/test.dat".
      • Must support classpath pseudo-URLs, for example, "classpath:test.dat".
      • Should support relative file paths, for example, "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 (never null)
      See Also:
    • 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, for example, for implementations targeted at a Servlet container.

      Parameters:
      path - the path to the resource
      Returns:
      the corresponding Resource handle
      See Also: