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.

Para cargar uno o más objetos 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.