2011-08-31 43 views
2

在調用其他上下文時,是否可以在spring.Net中並行創建多個上下文而不創建它們的對象?Spring.Net中的多個上下文

<spring> 
<context> 
    <context name="A"> 
    <!-- ... some objects might be created here --> 
    </context> 
    <context name="B"> 
    <!-- ... some objects might be created here --> 
    </context> 
</context> 
</spring> 

在Spring.Net奇怪的是,即使我叫GetContext()特定語境 (GetContext("A")例如)所有對象(甚至是那些從B如果我叫A)創建。

var ctx = ContextRegistry.GetContext("A"); 
var my = (MyClass)ctx.GetObject("MyObject"); // where MyObject is in context A 

我可以明確地做一個懶惰的初始化調用GetObject()時,但有可能是一個更好的解決辦法了嗎?

回答

1

默認情況下,當上下文被初始化並且在應用程序啓動時添加到註冊表中時,應該急切地實例化單例,因此我非常確定上下文「B」中的非惰性對象早已被實例化你可以在任何Context上調用GetObject()(也就是說,當你進行任何GetObject()調用IIRC時,急切的實例化並不相關)。 AFAIK,完成你之後的唯一方法的確是將整個Context「B」的默認lazy設置爲true,或者在逐個對象的基礎上將lazy = true設置爲lazy = true上下文「B」。

+2

如何將整個上下文配置爲lazy-init? – Marijn

+0

你是對的。當上下文被調用時,它們被立即執行。我的意思是表明該對象是一個懶惰的對象,然後它會在您的GetObject調用中創建。否則在調用GetContext時創建對象...但無論如何,我真的希望即使內部上下文對外部上下文的對象沒有依賴關係,並且我明確地調用內部上下文,也會創建整個上下文。 – Beachwalker