2012-03-13 56 views
0

Spring的DI對於單例作用域bean工作正常。但是,關於原型範圍,如果原型bean本身會注入其他bean,這並不方便。關於原型bean,我想用Java的new關鍵字創建它們,並且運行時構造函數參數很難在XML bean配置中靜態描述。使用新的關鍵字使得Spring容器中的prototype bean變得不可用,當然不可能在其中使用Spring DI。春天的依賴注入。對於原型範圍不太方便

我想知道人們是如何解決這樣的問題的?當然,我可以使用AspectJ來做自己的注射作爲補償。但有兩種注射機制對我來說不是一個很好的解決方案。

回答

0

馬克你的bean原型與@Configurable

+0

這絕對是我想要的。謝謝 – 2012-03-13 17:31:58

1

您應該能夠通過context.getBean(name)context.getBean(class)創建原型對象,其中上下文ApplicationContext實例。

另一種可能更加方便的方式是使用工廠模式,工廠對象是一個單身人員,所有依賴關係都已連線並將它們傳遞給factory.createInstance(...)中的構造對象。

0

Spring允許你通過構造函數值的getBean()方法,看看這個SO-帖子:

spring bean with dynamic constructor value

此外,什麼是錯的關於從上下文獲取一個bean,這只是部分初始化你是通過setters自己設置運行時參數的嗎?

請注意,Spring-Beans默認爲Singletons,因此在Spring-Config中,您必須明確指定它們爲原型範圍!