根據我的理解,如果scope =「prototype」給出了一個bean,那麼該類的一個新實例就會在每個請求上創建。那麼,爲什麼會有人使用Spring來創建一個新的對象,而不是簡單地寫春季範圍=「原型」的用途是什麼?
ClassName newBean = new ClassName();
我只用Spring構建單身。
根據我的理解,如果scope =「prototype」給出了一個bean,那麼該類的一個新實例就會在每個請求上創建。那麼,爲什麼會有人使用Spring來創建一個新的對象,而不是簡單地寫春季範圍=「原型」的用途是什麼?
ClassName newBean = new ClassName();
我只用Spring構建單身。
因爲你可能想在你的原型注入其他豆類。或者您可能想將AOP方面應用於此bean的方法。或者你可能想把它變成事務性的。或安全。
如果你簡單地調用類的構造函數,它不是一個Spring管理的bean了,而且豆不這樣做的手工構造的對象都做春天。當彈簧被用作用於struts2的一個ObjectFactory我知道的
一種情況是。爲每個http請求創建一個新的Action對象。
CMOE = 「關閉爲變形例,對擴展開放」。
如果沒有爲任何類名行爲改變,那麼你就可以擴展類名,並提供新的類的對象配置。
這不需要更改任何代碼。
這是一個很簡單的原因。 JB Nizet所說的更具描述性和深入的答案。
因爲如果你自己構造類,除非你調用幾個setter,否則無法注入類。此外,它還允許類從AOP等其他彈簧特性中獲益,從而可以輕鬆進行事務管理,緩存,異步工作等。 –