请求范围的bean内的请求范围的bean

时间:2020-07-06 15:29:11

标签: java spring

已配置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

想知道在什么情况下会发生这种情况吗?

注意:

  1. 已在方法 initChild 中添加了日志,而spring不调用该方法。但是,initParent仍在被调用。

  2. 程序可以继续工作几天,因此它不是100%可复制的东西。如果我们在发生此问题时重新启动服务器,则一切正常。

0 个答案:

没有答案