2016-04-06 201 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