Несколько контекстов в Spring.Net - PullRequest
2 голосов
/ 31 августа 2011

Возможно ли иметь несколько контекстов в 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 Ответ

1 голос
/ 01 сентября 2011

По умолчанию одиночные экземпляры должны создаваться с энтузиазмом, когда контекст инициализируется и добавляется в реестр по мере запуска вашего приложения, так что я уверен, что не ленивые объекты из контекста "B" уже созданы еще задолго до того, как вы вызовите GetObject () для любого контекста (т. е. активное создание не связано вообще с тем, когда вы выполняете какие-либо вызовы GetObject () IIRC).

AFAIK, единственный способ выполнить то, что вам нужно, - это либо установить для lazy по умолчанию значение true для всего контекста "B", либо иным образом указать lazy = true для каждого объекта в контексте. "B".

...