我已经在某处读过所有EJB bean(Stateless,Stateful和Singleton)的默认范围是依赖范围。依赖范围意味着范围取决于它们注入的bean。所以,我试着测试这个概念。
我有一个名为A的请求范围托管bean。我正在向A中注入一个无状态bean B,其范围默认依赖。因此,B范围依赖于请求范围的A。因此,对于每个新请求,应该有不同的A和B实例。但我没有得到它。当我为两个不同的请求运行代码时,我得到的是A的不同实例但是B的实例相同。为什么?
其次,当我将一个依赖范围的有状态Bean C注入A时,我得到两个不同请求的两个不同的A和C实例。这也必须发生在无状态bean的情况下,但它没有发生。
如果我将具有默认依赖范围的Singleton bean D注入到bean A中,对于两个不同的请求,与第一种情况类似,我得到的A bean的不同实例位于C bean的相同实例中为什么?
根据我的理解,当bean默认依赖于范围时,无论是无状态,有状态还是单例,它的范围取决于它注入的bean。因此,如果Bean A是请求作用域,则所有注入到具有依赖作用域的A的bean必须成为请求作用域,并且必须具有不同请求的不同实例。有人可以向我解释为什么它没有发生?