Package org.springframework.core.io

# Interface ResourceLoader

All Known Subinterfaces:
  `ResourcePatternResolver`

All Known Implementing Classes:
  `ClassRelativeResourceLoader`, `DefaultResourceLoader`, `FileSystemResourceLoader`, `PathMatchingResourcePatternResolver`

public interface ResourceLoader
Strategy interface for loading resources (for example, class path or file system resources). An `org.springframework.context.ApplicationContext` is required to provide this functionality plus extended `ResourcePatternResolver` support.

`DefaultResourceLoader` is a standalone implementation that is usable outside an ApplicationContext and is also used by `ResourceEditor`.

Bean properties of type `Resource` and `Resource[]` can be populated from Strings when running in an ApplicationContext, using the particular context's resource loading strategy.

Since:
  10.03.2004
Author:
  Juergen Hoeller
See Also:
  - `Resource`
  - `ResourcePatternResolver`
  - `org.springframework.context.ApplicationContext`
  - `org.springframework.context.ResourceLoaderAware`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`CLASSPATH_URL_PREFIX`
Pseudo URL prefix for loading from the class path: "classpath:".

## Method Summary

Modifier and Type
Method
Description
`ClassLoader`
`getClassLoader()`
Expose the `ClassLoader` used by this `ResourceLoader`.
`Resource`
`getResource(String location)`
Return a `Resource` handle for the specified resource location.

## Field Details

### CLASSPATH_URL_PREFIX

static final String CLASSPATH_URL_PREFIX
Pseudo URL prefix for loading from the class path: "classpath:".

See Also:
  - Constant Field Values

## Method Details

### getResource

Resource getResource(String location)
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.

Parameters:
  `location` - the resource location
Returns:
  a corresponding `Resource` handle (never `null`)
See Also:
  - `CLASSPATH_URL_PREFIX`
  - `Resource.exists()`
  - `InputStreamSource.getInputStream()`

### getClassLoader

@Nullable ClassLoader getClassLoader()
Expose the `ClassLoader` used by this `ResourceLoader`.

Clients which need to access the `ClassLoader` directly can do so in a uniform manner with the `ResourceLoader`, rather than relying on the thread context `ClassLoader`.

Returns:
  the `ClassLoader` (only `null` if even the system `ClassLoader` isn't accessible)
See Also:
  - `ClassUtils.getDefaultClassLoader()`
  - `ClassUtils.forName(String, ClassLoader)`