我目前使用以下"模式"在我的所有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的无效性做出任何保证?
答案 0 :(得分:0)
文档说:
默认情况下,只要零候选bean可用,自动装配就会失败;默认行为是将带注释的方法,构造函数和字段视为指示所需的依赖项。
所以是的,你正在做出毫无意义的断言。顺便说一句,您可以直接在构造函数中执行这些断言,或者至少在@ PostConstruct-annotated方法中执行这些断言,而不必重写InitializingBean。