В чем разница между синглоном Spring и синглетом Java (шаблон проектирования)? - программирование
Подтвердить что ты не робот

В чем разница между синглоном Spring и синглетом Java (шаблон проектирования)?

Я изучаю структуру Spring и в настоящее время читаю книгу об этом. В этой книге говорится, что синглтон Spring отличается от синглтона Java? Что это значит и каковы различия? Благодаря

4b9b3361

Ответ 1

Синтаксис Java связан с загрузчиком класса Java, а одиночный элемент Spring ограничен контекстом контейнера.

Что в основном означает, что в Java вы можете быть уверены, что одноэлемент является действительно синглом только в контексте загрузчика классов, который его загрузил. Другие загрузчики классов должны быть способны создать еще один экземпляр (при условии, что загрузчики классов не находятся в одной иерархии загрузчика классов), несмотря на все ваши усилия в коде, чтобы предотвратить его.

В Spring, если вы можете загрузить свой одноэлементный класс в двух разных контекстах, а затем снова можно разбить концепцию singleton.

Итак, в целом, Java рассматривает что-то одноэлементное, если он не может создать более одного экземпляра этого класса внутри данного загрузчика классов, тогда как Spring будет рассматривать что-то одноэлементное, если он не может создать более одного экземпляра класса внутри данного контейнера/контекста.

Ответ 2

Синтаксис Java, в соответствии с шаблоном проектирования, где экземпляр ограничивается одним, как правило, для каждого загрузчика классов JVM. Wikipedia

A Spring singleton bean может быть любым нормальным классом, который вы пишете, но объявляя его областью как singleton, означает, что Spring создаст только один экземпляр и предоставит ссылку на все beans, ссылающиеся на объявленный bean. В вашем приложении может быть много экземпляров этого класса, но для этого bean будет создано только одно. У вас может даже быть несколько beans того же класса, все объявленные как singleton. Каждый bean создаст ровно один экземпляр класса. Spring 3.1 Doc