Spring IoC контейнер: конфигурация на основе аннотаций, @Required

Аннотация @Required применяется к методам установки (сеттерам) свойств бина, как в следующем примере:

Java

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Required
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

    // ...
}

Kotlin

class SimpleMovieLister {

    @Required
    lateinit var movieFinder: MovieFinder

    // ...
}

Эта аннотация указывает, что затронутое свойство компонента должно быть заполнено во время конфигурации, через явное значение свойства в определении компонента или через автоматическую привязку (autowiring). Контейнер генерирует исключение, если затронутое свойство компонента не было заполнено. Это учитывает нетерпеливый (eager) и явный сбой, избегая экземпляров NullPointerException и т.п. позже. Рекомендуется помещать утверждения в сам класс компонента (например, в метод init). Это обеспечивает выполнение этих обязательных ссылок и значений, даже если вы используете класс вне контейнера.

Начиная с Spring Framework 5.1 аннотация @Required формально устарела в пользу использования инжектора конструктора для требуемых настроек (или пользовательской реализации InitializingBean.afterPropertiesSet() вместе с методами установки свойств бина).


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


Комментарии

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

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

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

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