All Implemented Interfaces:
InputStreamSource, Resource
Direct Known Subclasses:
DefaultResourceLoader.ClassPathContextResource

public class ClassPathResource extends AbstractFileResolvingResource
{link Resource} implementation for class path resources. Uses either a given {link ClassLoader} or a given {link Class} for loading resources.

Supports resolution as java.io.File if the class path resource resides in the file system, but not for resources in a JAR. Always supports resolution as URL.

Since:
28.12.2003
Author:
Juergen Hoeller, Sam Brannen see ClassLoader#getResourceAsStream(String) see Class#getResourceAsStream(String)
  • Constructor Details

    • ClassPathResource

      public ClassPathResource(String path, @Nullable ClassLoader classLoader)
      Create a new ClassPathResource for ClassLoader usage. A leading slash will be removed, as the ClassLoader resource access methods will not accept it.
      Parameters:
      path - the absolute path within the classpath
      classLoader - the class loader to load the resource with, or null for the thread context class loader see ClassLoader#getResourceAsStream(String)
    • ClassPathResource

      public ClassPathResource(String path, @Nullable Class<?> clazz)
      Create a new ClassPathResource for Class usage. The path can be relative to the given class, or absolute within the classpath via a leading slash.
      Parameters:
      path - relative or absolute path within the class path
      clazz - the class to load resources with see java.lang.Class#getResourceAsStream
  • Method Details

    • getPath

      public final String getPath()
      Return the path for this resource (as resource path within the class path).
    • getClassLoader

      @Nullable public final ClassLoader getClassLoader()
      Return the ClassLoader that this resource will be obtained from.
    • exists

      public boolean exists()
      This implementation checks for the resolution of a resource URL. see java.lang.ClassLoader#getResource(String) see java.lang.Class#getResource(String)
      Specified by:
      exists in interface Resource
      Overrides:
      exists in class AbstractFileResolvingResource
    • resolveURL

      @Nullable protected URL resolveURL()
      Resolves a URL for the underlying class path resource.
      Returns:
      the resolved URL, or null if not resolvable
    • getInputStream

      public InputStream getInputStream() throws IOException
      This implementation opens an InputStream for the given class path resource. see java.lang.ClassLoader#getResourceAsStream(String) see java.lang.Class#getResourceAsStream(String)
      Returns:
      the input stream for the underlying resource (must not be null)
      Throws:
      FileNotFoundException - if the underlying resource does not exist
      IOException - if the content stream could not be opened see Resource#isReadable()
    • getURL

      public URL getURL() throws IOException
      This implementation returns a URL for the underlying class path resource, if available. see java.lang.ClassLoader#getResource(String) see java.lang.Class#getResource(String)
      Specified by:
      getURL in interface Resource
      Overrides:
      getURL in class AbstractResource
      Throws:
      IOException - if the resource cannot be resolved as URL, i.e. if the resource is not available as a descriptor
    • createRelative

      public Resource createRelative(String relativePath)
      This implementation creates a ClassPathResource, applying the given path relative to the path of the underlying resource of this descriptor. see org.springframework.util.StringUtils#applyRelativePath(String, String)
      Specified by:
      createRelative in interface Resource
      Overrides:
      createRelative in class AbstractResource
      Parameters:
      relativePath - the relative path (relative to this resource)
      Returns:
      the resource handle for the relative resource
    • getFilename

      @Nullable public String getFilename()
      This implementation returns the name of the file that this class path resource refers to. see org.springframework.util.StringUtils#getFilename(String)
      Specified by:
      getFilename in interface Resource
      Overrides:
      getFilename in class AbstractResource
    • getDescription

      public String getDescription()
      This implementation returns a description that includes the class path location.
    • equals

      public boolean equals(@Nullable Object other)
      This implementation compares the underlying class path locations.
      Overrides:
      equals in class AbstractResource
    • hashCode

      public int hashCode()
      This implementation returns the hash code of the underlying class path location.
      Overrides:
      hashCode in class AbstractResource