1
,如果我们有弹簧豆类配置
1-情况,我们有A级构造为单件和一个子类B中配置为原型A类中的成员。
2-另一种情况,与第一种情况相反,我们将Class A定义为原型,将Class B定义为singleton。
当对这些类A和B提出请求时,Spring容器如何初始化并处理这两种情况?
,如果我们有弹簧豆类配置
1-情况,我们有A级构造为单件和一个子类B中配置为原型A类中的成员。
2-另一种情况,与第一种情况相反,我们将Class A定义为原型,将Class B定义为singleton。
当对这些类A和B提出请求时,Spring容器如何初始化并处理这两种情况?
请看一看这个答案 - Spring session-scoped beans as dependencies in prototype beans?
您可以随时注入更大范围内的一个bean(例如单)到 豆窄的范围(如会话作用域的bean),但通过其他方式 ,您需要一个scoped-proxy。
这适用于您的问题。
您正在向范围较宽的bean注入更窄的范围bean。 (原型比单身更窄)。它应该适合你。
您正试图将更大范围的bean注入到更窄范围的bean中。您需要使用scoped-proxy。
我真的很感谢你的回答。但是,这里的问题是......当A类或B类的要求提出时,春天如何处理这两种情况的请求? @asg –
@OmarAlQuaseer对于迟到的答复道歉。你的情况1很简单,即在singleton内部注入原型。与singleton(这是一个更长的生命周期bean)相比,Prototype是一个更窄的范围bean(即寿命短的bean)。因此,你应该没问题。 – asg
唯一棘手的情况是你试图在原型bean内部注入单例的第二个例子(即寿命较短的bean中的较长寿命bean)。因此,对于这种情况,Spring建议使用scoped-proxies(单例bean)代替直接依赖。让我试着为你编一些代码。 – asg