Аннотация @Required
применяется к сеттерам свойств бина, как в следующем примере:
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Required
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// ...
}
class SimpleMovieLister {
@set:Required
lateinit var movieFinder: MovieFinder
// ...
}
Данная аннотация указывает, что затронутое свойство бина должно быть заполнено во время конфигурирования через явное значение свойства в определении бина или через автоматическое обнаружение и связывание. Контейнер генерирует исключение, если соответствующее свойство бина не было заполнено. Это позволяет устранить явный сбой, избежав в дальнейшем случаев NullPointerException
и т.п. Мы по-прежнему рекомендуем помещать утверждения в сам класс бина (например, в метод init). Это обеспечивает соблюдение требуемых ссылок и значений, даже если класс используется вне контейнера.
RequiredAnnotationBeanPostProcessor
должен быть зарегистрирован как бин, чтобы активировать поддержку аннотации @Required
.
Аннотация @Required
и RequiredAnnotationBeanPostProcessor
формально устарели, начиная с Spring Framework 5.1 уступив свое место использованию способа внедрения зависимости через конструктор для требуемых настроек (или специальной реализации InitializingBean.afterPropertiesSet()
или специального метода @PostConstruct
вместе с устанавливающими методами свойств бина).
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ