Spring: Использование нескольких контейнеров IoC для изменения области действия Бина внутри контейнера IoC? - PullRequest
0 голосов
/ 06 октября 2018

Я хочу создать несколько экземпляров Object2.Каждый экземпляр должен быть внедрен со своим собственным экземпляром Object1, следовательно, Object1 имеет прототип области действия.Теперь, что, если я хочу, чтобы Object1 имел область видимости синглтона внутри графа объекта / запуска с Object2?
Я не могу найти какой-либо другой способ создания нового контейнера IoC, внедрения прототипа Oject1 в него и изменения его области действия на singleton внутри secondContext.Является ли это приемлемым вариантом?

@Bean
Scope("prototype")
Object1 object1(){
    return new Object1();
}


@Bean
Scope("prototype")
Object2 object2(Object1 object1){
  // 1. create a new IoC container
  ApplicationContext secondContext= new ClassPathXmlApplicationContext("Beans.xml");
  // 2. add the prototyped object1 to the container and make sure that it's 
  //    singleton scoped inside this container
  [some code that adds object1 to the container]
  // 3. Object2's entire object graph now uses the same instance of Object1
  return (Object2) secondContext.getBean("Object2");
}


В отличие от этого, если бы я не создавал Object2 через отдельный контейнер IoC, то каждый элемент @autowired элемента графа объектов Object2 был бы создан с помощьюдругой / новый экземпляр Object1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...