已配置2个类,它们类似于:
class ParentImpl implements Parent {
private Child child;
@Autowired
public void setChild(Child child) {
this.child = child
}
public void accessChild() {
// Access the child here
}
}
class ChildImpl implements Child {
}
它们两个都已配置为请求作用域Spring bean。下面是类似的代码段:
@Configuration
public class ApplicationConfiguration {
@Bean
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.INTERFACES)
public Parent initParent() {
return new ParentImpl()
}
@Bean
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.INTERFACES)
public Child initChild() {
return new ChildImpl();
}
}
他们俩都工作得很好。但是,在某个特定的时间戳记 t , parent 对象内的 child 为空,方法 accessChild 抛出一个< em> NullPointerException
想知道在什么情况下会发生这种情况吗?
注意:
已在方法 initChild 中添加了日志,而spring不调用该方法。但是,initParent仍在被调用。
程序可以继续工作几天,因此它不是100%可复制的东西。如果我们在发生此问题时重新启动服务器,则一切正常。