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.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки