Spring Resource: интерфейс ResourceLoaderAware
Интерфейс ResourceLoaderAware - это специальный интерфейс обратного вызова, который идентифицирует компоненты, которые должны быть предоставлены со ссылкой на ResourceLoader. В следующем листинге показано определение интерфейса ResourceLoaderAware:
Java
public interface ResourceLoaderAware {
void setResourceLoader(ResourceLoader resourceLoader);
}
Kotlin
interface ResourceLoaderAware {
fun setResourceLoader(resourceLoader: ResourceLoader)
}
Когда класс реализует ResourceLoaderAware и развертывается в контексте приложения (как компонент, управляемый Spring), он распознается контекстом приложения как ResourceLoaderAware. Затем контекст приложения вызывает setResourceLoader(ResourceLoader), предоставляя себя в качестве аргумента (помните, все контексты приложения в Spring реализуют интерфейс ResourceLoader).
Поскольку ApplicationContext является ResourceLoader, bean-компонент может также реализовать интерфейс ApplicationContextAware и напрямую использовать предоставленный контекст приложения для загрузки ресурсов. Однако в целом лучше использовать специализированный интерфейс ResourceLoader, если это все, что вам нужно. Код будет связан только с интерфейсом загрузки ресурсов (который можно рассматривать как служебный интерфейс), а не со всем интерфейсом Spring ApplicationContext.
В компонентах приложения вы также можете полагаться на автоматическое подключение ResourceLoader в качестве альтернативы реализации интерфейса ResourceLoaderAware. "Традиционный" конструктор и режимы автосоединения byType могут предоставлять ResourceLoader либо для аргумента конструктора, либо для параметра метода установки (setter method), соответственно. Для большей гибкости (включая возможность автоматического подключения полей и методов с несколькими параметрами) рассмотрите возможность использования функций автоматического подключения на основе аннотаций. В этом случае ResourceLoader автоматически подключается к полю, аргументу конструктора или параметру метода, который ожидает тип ResourceLoader, если рассматриваемое поле, конструктор или метод содержит аннотацию @Autowired.
Читайте также:
- Spring Resource
- Spring Resource: встроенные реализации Resource
- Spring Resource: интерфейс ResourceLoader
Комментарии
Отправить комментарий