Spring的Autowired和InitializingBean

时间:2015-06-27 10:40:23

标签: spring autowired

我目前使用以下"模式"在我的所有Spring组件/配置/服务类上:

@Component
final class SomeComponent implements InitializingBean {
  private SomeBean someBean;

  @Autowired
  public SomeComponent(SomeBean someBean) {
    this.someBean = someBean;
  }

  @Override
  public void afterPropertiesSet() throws Exception {
    Assert.state(someBean != null, "SomeBean should not be null.");
  }

  public void someMethod() {
    someBean.doSomething();
  }
}

我是否应该真正实现这样的事情,或者我是否只是通过进行无意义的断言来累积初始化时间? Spring是否对注入的bean的无效性做出任何保证?

1 个答案:

答案 0 :(得分:0)

文档说:

  

默认情况下,只要零候选bean可用,自动装配就会失败;默认行为是将带注释的方法,构造函数和字段视为指示所需的依赖项。

所以是的,你正在做出毫无意义的断言。顺便说一句,您可以直接在构造函数中执行这些断言,或者至少在@ PostConstruct-annotated方法中执行这些断言,而不必重写InitializingBean。