@Required 注解适用于 Bean 属性 setter 方法,如下面的例子。

    1. public class SimpleMovieLister {
    2. private MovieFinder movieFinder;
    3. @Required
    4. public void setMovieFinder(MovieFinder movieFinder) {
    5. this.movieFinder = movieFinder;
    6. }
    7. // ...
    8. }

    这个注解表明,受影响的 bean 属性必须在配置时通过 bean 定义中的显式属性值或通过自动布线来填充。如果受影响的 bean 属性没有被填充,容器就会抛出一个异常。这允许急切和明确的失败,避免以后出现 NullPointerException 实例或类似情况。我们仍然建议你把断言放到 Bean 类本身(例如,放到一个init 方法中)。这样做,即使你在容器外使用该类,也能强制执行那些必要的引用和值。

    :::tips RequiredAnnotationBeanPostProcessor 必须注册为 bean,以支持 @Required 注解。 ::: :::tips 从 Spring Framework 5.1 开始,@Required 注解和 RequiredAnnotationBeanPostProcessor 被正式废弃,转而使用构造器注入来实现所需的设置(或者自定义 InitializingBean.afterPropertiesSet() 的实现,或者自定义 @PostConstruct 方法与 Bean 属性设置方法)。 :::