2013-10-15 2 views
8

Предположим, что два класса ClassA и ClassB. Предположим, что ClassB зависит от ClassA. В файле конфигурации, если мы определяем область действия ClassA как singleton, а classB - Prototype, то что происходит с экземпляром ClassB каждый раз, когда мы создаем экземпляр класса ClassA? Будет ли возвращен тот же экземпляр ClassB или новый экземпляр будет создан каждый раз, когда будет возвращен экземпляр класса ClassA?Весной бобы области. Singleton и Prototype

спасибо !!!

+4

Так много программистов весны ...: D. Внедрение одноэлементного компонента в прототипном компоненте приведет к разным экземплярам прототипа bean, использующего один и тот же экземпляр одноэлементного компонента. Для обратного случая (инъецирования прототипа bean в Singleton), если бы он по умолчанию служил компоненту singleton с тем же экземпляром компонента прототипа (см. [Эту статью] (http://prasanthnath.wordpress.com/2013/ 03/21/injecting-a-prototype-bean-in-a-singleton-bean /) для получения дополнительной информации). –

ответ

5

Если ClassB является прототипом, новый экземпляр ClassB всегда создается, он не заботится о других классах при создании.

Таким образом, прототип ClassB и одноэлементный класс ClassA, в какой-то момент вы могли бы иметь N экземпляров ClassB и только 1 класса ClassA.

В вашем случае, как только один экземпляр ClassA будет существовать на прикладной жизненном цикле, то это будет только один экземпляр ClassB, который будет отличаться от любого другого ClassB ссылается другими компонентами в вашем приложении

3

Что происходит с экземпляром ClassB каждый раз, когда мы создаем экземпляр компонента ClassA?

Поскольку ClassA одноточечен, одного экземпляра будет распределен между всеми экземплярами ClassB.

Будет ли возвращен экземпляр экземпляра ClassB или создается новый экземпляр каждый раз, когда возвращается экземпляр класса ClassA?

Я думаю, что здесь вы имели в виду будет тот же экземпляр ClassA получает возвращается или создается новый экземпляр каждый раз, когда экземпляр ClassB возвращается?

Каждый раз, когда экземпляр ClassB создан, общий экземпляр ClassA будет (повторно) использован.

+0

Я уверен, что тот же экземпляр ClassA будет возвращен ... но не уверен в экземпляре ClassB. Спасибо!!! –

2

Что происходит с экземпляром ClassB каждый раз, когда мы создаем экземпляр компонента ClassA?

Ничего, если ClassA является singleton, он будет создан только один раз.

Будет ли возвращен экземпляр экземпляра ClassB или создается новый экземпляр каждый раз, когда возвращается экземпляр класса ClassA?

Различные экземпляры, поскольку это прототип боба. Но поскольку ClassA является одноэлементным, каждый раз он будет инициироваться одинаково (зависит от вашей связи между этими классами, о которых вы упомянули)

Смежные вопросы