Interface ResourceLoader
- All Known Subinterfaces:
ApplicationContext, ConfigurableApplicationContext, ConfigurableWebApplicationContext, ResourcePatternResolver, WebApplicationContext
- All Known Implementing Classes:
AbstractApplicationContext, AbstractRefreshableApplicationContext, AbstractRefreshableConfigApplicationContext, AbstractRefreshableWebApplicationContext, AbstractXmlApplicationContext, AnnotationConfigApplicationContext, AnnotationConfigWebApplicationContext, ClassPathXmlApplicationContext, ClassRelativeResourceLoader, DefaultResourceLoader, FileSystemResourceLoader, FileSystemXmlApplicationContext, GenericApplicationContext, GenericGroovyApplicationContext, GenericWebApplicationContext, GenericXmlApplicationContext, GroovyWebApplicationContext, PathMatchingResourcePatternResolver, ServletContextResourceLoader, ServletContextResourcePatternResolver, StaticApplicationContext, StaticWebApplicationContext, XmlWebApplicationContext
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:
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionExpose theClassLoaderused by thisResourceLoader.getResource(String location) Return aResourcehandle for the specified resource location.
-
Field Details
-
CLASSPATH_URL_PREFIX
Pseudo URL prefix for loading from the class path: "classpath:".This retrieves the "nearest" matching resource in the classpath.
- See Also:
-
CLASSPATH_ALL_URL_PREFIX
Pseudo URL prefix for all matching resources from the class path: "classpath*:".This differs from the common
"classpath:"prefix in that it retrieves all matching resources for a given path. For example, to locate all "messages.properties" files in the root of all deployed JAR files you can use the location pattern"classpath*:/messages.properties".As of Spring Framework 6.0, the semantics for the
"classpath*:"prefix have been expanded to include the module path as well as the class path.As of Spring Framework 7.1, this prefix is supported for
getResource(String)calls as well (exposing a multi-content resource handle), rather than just forResourcePatternResolver.getResources(String).- Since:
- 7.1 (previously only declared on the
ResourcePatternResolversub-interface) - See Also:
-
-
Method Details
-
getResource
Return aResourcehandle 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.properties".
- Must support classpath pseudo-URLs, for example, "classpath:test.properties".
(Exposing the "nearest" resource in the classpath; see
ClassLoader.getResource(String).) - Should support classpath-all URLs, for example, "classpath*:test.properties".
(If supported, the returned
Resourceneeds to expose the entire content of all same-named resources in the classpath throughResource.consumeContent(IOConsumer); seeClassLoader.getResources(String). For individual access to each such matching resource in the classpath, useResourcePatternResolver.getResources(String).) - Should support relative file paths, for example, "WEB-INF/test.properties". (This will be implementation-specific, typically provided by an ApplicationContext implementation.)
Note that a
Resourcehandle does not imply an existing resource; you need to invokeResource.exists()to check for existence.- Parameters:
location- the resource location- Returns:
- a corresponding
Resourcehandle (nevernull) - See Also:
-
getClassLoader
@Nullable ClassLoader getClassLoader()Expose theClassLoaderused by thisResourceLoader.Clients which need to access the
ClassLoaderdirectly can do so in a uniform manner with theResourceLoader, rather than relying on the thread contextClassLoader.- Returns:
- the
ClassLoader(onlynullif even the systemClassLoaderisn't accessible) - See Also:
-