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() вместе с методами установки свойств бина).
Читайте также:
- Spring IoC контейнер: конфигурация контейнера на основе аннотаций
- Spring IoC контейнер: точки расширения контейнера, пример использования BeanPostProcessor
- Spring IoC контейнер: точки расширения контейнера, BeanFactoryPostProcessor
Комментарии
Отправить комментарий