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

Java
public class SimpleMovieLister {
    private MovieFinder movieFinder;
    @Required
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }
    // ...
}
Kotlin
class SimpleMovieLister {
    @set:Required
    lateinit var movieFinder: MovieFinder
    // ...
}

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

RequiredAnnotationBeanPostProcessor должен быть зарегистрирован как бин, чтобы активировать поддержку аннотации @Required.

Аннотация @Required и RequiredAnnotationBeanPostProcessor формально устарели, начиная с Spring Framework 5.1 уступив свое место использованию способа внедрения зависимости через конструктор для требуемых настроек (или специальной реализации InitializingBean.afterPropertiesSet() или специального метода @PostConstruct вместе с устанавливающими методами свойств бина).