public interface ResourceLoaderAware extends Aware
ResourceLoader
(typically the ApplicationContext) that it runs in.
This is an alternative to a full ApplicationContext
dependency via
the ApplicationContextAware
interface.
Note that Resource
dependencies can also
be exposed as bean properties of type Resource
or Resource[]
,
populated via Strings with automatic type conversion by the bean factory. This
removes the need for implementing any callback interface just for the purpose
of accessing specific file resources.
You typically need a ResourceLoader
when your application object has to
access a variety of file resources whose names are calculated. A good strategy is
to make the object use a DefaultResourceLoader
but still implement ResourceLoaderAware
to allow for overriding when
running in an ApplicationContext
. See
ReloadableResourceBundleMessageSource
for an example.
A passed-in ResourceLoader
can also be checked for the
ResourcePatternResolver
interface
and cast accordingly, in order to resolve resource patterns into arrays of
Resource
objects. This will always work when running in an ApplicationContext
(since the context interface extends the ResourcePatternResolver interface). Use a
PathMatchingResourcePatternResolver
as
default; see also the ResourcePatternUtils.getResourcePatternResolver
method.
As an alternative to a ResourcePatternResolver
dependency, consider
exposing bean properties of type Resource[]
array, populated via pattern
Strings with automatic type conversion by the bean factory at binding time.
ApplicationContextAware
,
Resource
,
ResourceLoader
,
ResourcePatternResolver
Modifier and Type | Method and Description |
---|---|
void |
setResourceLoader(ResourceLoader resourceLoader)
Set the ResourceLoader that this object runs in.
|
void setResourceLoader(ResourceLoader resourceLoader)
This might be a ResourcePatternResolver, which can be checked
through instanceof ResourcePatternResolver
. See also the
ResourcePatternUtils.getResourcePatternResolver
method.
Invoked after population of normal bean properties but before an init callback
like InitializingBean's afterPropertiesSet
or a custom init-method.
Invoked before ApplicationContextAware's setApplicationContext
.
resourceLoader
- the ResourceLoader object to be used by this objectResourcePatternResolver
,
ResourcePatternUtils.getResourcePatternResolver(org.springframework.core.io.ResourceLoader)