Шаблон разработки Singleton по сравнению с бобами Singleton в контейнере Spring

Ошибка из-за того, что вы не обращаетесь к словарному ключу 'playlists'

for plst in playlist['playlists']:
    print(plst['name'])

# Piano
87
задан Alex Abdugafarov 24 October 2011 в 04:05
поделиться

3 ответа

Все ответы, до сих пор по крайней мере, концентрируются на объяснении различия между шаблоном разработки и одиночным элементом Spring и не рассматривают Ваш фактический вопрос: шаблон разработки Singleton должен использоваться или одноэлементный боб Spring? что лучше?

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

Теперь, ответ на вопрос прост: не используйте шаблон разработки Singleton!
одноэлементный боб Spring Использования, реализованный как класс с общедоступным конструктором.
, Почему? Поскольку шаблон разработки Singleton считают антишаблоном. Главным образом, потому что это усложняет тестирование. (И если Вы не используете Spring для введения его затем все классы, которые используют одиночный элемент, теперь плотно связываются с ним), и Вы не можете заменить или расширить его. Можно погуглить "антишаблон Singleton" для получения большего количества информации об этом, например, , антишаблон Singleton

Используя одиночный элемент Spring является способом пойти (с одноэлементный боб, реализованный НЕ как шаблон разработки Singleton, а скорее с общедоступным конструктором) так, чтобы одноэлементный боб Spring мог легко быть протестирован и классы, которые используют его, не сильно связываются к нему, а скорее, Spring вводит одиночный элемент (как интерфейс) во все бобы, которым нужен он, и одноэлементный боб может быть заменен любое время с другой реализацией, не влияя на клиентские классы, которые используют его.

0
ответ дан 24 November 2019 в 07:51
поделиться

Одноэлементный компонент в Spring и шаблон singleton совершенно разные. Шаблон синглтона говорит, что один и только один экземпляр определенного класса будет когда-либо создан для каждого загрузчика классов.

Объем синглтона Spring описывается как «на контейнер на компонент». Это область определения bean-компонента для отдельного экземпляра объекта для каждого контейнера Spring IoC. Область действия по умолчанию в Spring - Singleton.

Несмотря на то, что по умолчанию область видимости - одноэлементная, вы можете изменить ее, указав атрибут области для элемента .

<bean id=".." class=".." scope="prototype" />
54
ответ дан 24 November 2019 в 07:51
поделиться

Одноэлементная область видимости в Spring означает, что этот компонент будет создан Spring только один раз.В отличие от области прототипа (новый экземпляр каждый раз), области запроса (один раз на запрос), области сеанса (один раз на сеанс HTTP).

Одиночная область видимости технически не имеет ничего общего с шаблоном проектирования синглтона. Вам не нужно реализовывать bean-компоненты как синглтоны, чтобы их можно было поместить в синглтон-область.

10
ответ дан 24 November 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: