2013-06-13 3 views
0

Singleton Pattern поддерживает экземпляр на уровне весеннего контейнера, а шаблон проектирования Singleton поддерживает его на уровне класса загрузчика.Spring Singleton Vs Singleton Design pattern - Class Loader

Есть ли какая-либо другая разница?

Далее, я по-прежнему считаю, что указанная причина не является веской причиной. Дело только в том, что один Контекст/Контейнер приложений загружается только в один загрузчик классов. Таким образом, технически нет никакой разницы. Это правильно или я чего-то не хватает?

Ref: Singleton design pattern vs Singleton beans in Spring container

+0

Синглтон картина на уровне загрузчика класса, в то время как Синглтон сфера фасоль в весенний контейнер. ---- http://www.javabench.in/2012/04/difference-between-singleton-design.html –

ответ

2

Ну, реальная разница не связана с загрузкой классов, но речь идет о принципе проектирования. Синглтон-шаблон имеет свои собственные ограничения. Он предоставляет объект глобально, а также его трудно проверить. Но синглтон через инфраструктуру DI, например Spring или Guice, свободен от этих проблем.

Этот SO thread может помочь вам разобраться. Также интересны статьи Google-singleton-detector и Misko Hevery's blog.

+1

+1 для указания правильных ссылок. –

1

Использование «реальный» синглтона является более жесткими ограничениями в том смысле, что вы тогда обязательно будут в состоянии создать только один экземпляр этого класса (в пределах загрузчика классов).

Если вы используете Spring Singleton-scoped beans, вы можете создать столько «одиночных» экземпляров этого класса, которые вам нравятся (до тех пор, пока класс bean не является реальным синглетоном).

Следовательно, они не являются технически одинаковыми.

+0

Не уверен, что я это понял. «Вы можете создать столько« одиночных »экземпляров этого класса»? Я могу создать много экземпляров singleton? –

+0

Обратите внимание на цитаты. См. Править. – Jukka

0

Это, главным образом, имя, которое эти два имеют вместе. Шаблон Singleton гарантирует, что класс имеет только один экземпляр, в то время как Spring Single Single bean scope просто инструктирует контейнер использовать единственный экземпляр компонента во время инъекции зависимости, bean может быть любым классом без ограничений.

+0

Singeton pattern - специально разработанный класс с частными конструкторами, общедоступной статической точкой глобального доступа и т. Д. Spring Singleton - это POJO, любой класс –

0

Spring singleton гарантирует, что создается только один экземпляр объекта до тех пор, пока объект создается с использованием Spring Framework. Напротив, реализация singleton pattern гарантирует, что присутствует только один экземпляр объекта.

Я видел код, где объекты были определены как одноэлементные в конфигурации весны. Объект singleton был создан несколько раз с использованием Spring DI и в других случаях с использованием нового оператора.

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