La interfaz ResourceLoaderAware
es una interfaz de devolución de llamada especial que identifica los
componentes que aceptan una referencia al ResourceLoader
que se les proporciona. La siguiente lista
muestra la definición de la interfaz ResourceLoaderAware
:
interfaz pública ResourceLoaderAware {
void setResourceLoader (ResourceLoader ResourceLoader);
}
Si una clase implementa ResourceLoaderAware
y se implementa en el contexto de una aplicación (como un
Spring Bean administrado), el contexto de la aplicación la reconoce como ResourceLoaderAware
. Luego, el
contexto de la aplicación llama a setResourceLoader(ResourceLoader)
, proporcionándose a sí mismo como
un argumento (recuerde que todos los contextos de la aplicación en Spring implementan la interfaz ResourceLoader
).
Debido a que ApplicationContext
es un ResourceLoader
, el bean también puede implementar la
interfaz ApplicationContextAware
y usar el contexto de aplicación proporcionado directamente para
cargar recursos. Sin embargo, en general, es mejor utilizar la interfaz especializada ResourceLoader
si
eso es todo lo que necesita. El código solo se asociará con la interfaz de carga de recursos (que puede considerarse
una interfaz de servicio), y no con toda la interfaz Spring ApplicationContext
.
Los componentes de la aplicación también pueden depender del descubrimiento y enlace automáticos de ResourceLoader
como alternativa a la implementación de la interfaz ResourceLoaderAware
. Los modos
tradicionales de detección automática y enlace constructor
y byType
son capaces
de proporcionar un ResourceLoader
para un argumento de constructor o un parámetro de establecimiento,
respectivamente. Para obtener una mayor flexibilidad (incluida la capacidad de descubrir automáticamente y vincular
campos y métodos con múltiples parámetros), considere utilizar funciones de vinculación y descubrimiento automático
basadas en anotaciones. En este caso, ResourceLoader
se descubre automáticamente y se asocia con un
campo, argumento de constructor o parámetro de método que espera un tipo ResourceLoader
si el campo,
constructor o método contiene el @Autowired
anotación.
Resource
para una ruta de recurso
que contiene comodines o utiliza un prefijo de recurso especial classpath*:
, en lugar de ResourceLoader
,
se debe asociar una instancia de ResourcePatternResolver
con los componentes de la aplicación.