2016-04-06 204 views
1

,如果我们有弹簧豆类配置

1-情况,我们有A级构造为单件和一个子类B中配置为原型A类中的成员。

2-另一种情况,与第一种情况相反,我们将Class A定义为原型,将Class B定义为singleton。

当对这些类A和B提出请求时,Spring容器如何初始化并处理这两种情况?

回答

1

请看一看这个答案 - Spring session-scoped beans as dependencies in prototype beans?

您可以随时注入更大范围内的一个bean(例如单)到 豆窄的范围(如会话作用域的bean),但通过其他方式 ,您需要一个scoped-proxy。

这适用于您的问题。

  1. 您正在向范围较宽的bean注入更窄的范围bean。 (原型比单身更窄)。它应该适合你。

  2. 您正试图将更大范围的bean注入到更窄范围的bean中。您需要使用scoped-proxy。

+0

我真的很感谢你的回答。但是,这里的问题是......当A类或B类的要求提出时,春天如何处理这两种情况的请求? @asg –

+0

@OmarAlQuaseer对于迟到的答复道歉。你的情况1很简单,即在singleton内部注入原型。与singleton(这是一个更长的生命周期bean)相比,Prototype是一个更窄的范围bean(即寿命短的bean)。因此,你应该没问题。 – asg

+0

唯一棘手的情况是你试图在原型bean内部注入单例的第二个例子(即寿命较短的bean中的较长寿命bean)。因此,对于这种情况,Spring建议使用scoped-proxies(单例bean)代替直接依赖。让我试着为你编一些代码。 – asg