在调用其他上下文时,是否可以在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")
)创建所有对象(即使是在我调用A时来自B的对象)。
var ctx = ContextRegistry.GetContext("A");
var my = (MyClass)ctx.GetObject("MyObject"); // where MyObject is in context A
我可以在调用GetObject()
时明确地执行延迟初始化,但可能有更好的解决方案吗?
答案 0 :(得分:1)
默认情况下,应该在初始化上下文时急切地实例化单例,并在应用启动时将其添加到注册表中,这样我就可以确定来自Context“B”的非延迟对象早在您实例化之前就已经实例化了在任一Context上调用GetObject()(即,当您进行任何GetObject()调用IIRC时,急切的实例化根本不相关。)
AFAIK,实现你所追求的东西的唯一方法确实是为整个Context“B”设置默认的lazy为true,或者在Context中逐个对象地指示lazy = true “B”。