Spring IoC контейнер: области применения бинов, синглтон

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

Иными словами, когда вы задаете определение bean-компонента, и оно определено как одноэлементное (синглтон), контейнер IoC Spring создает ровно один экземпляр объекта, определенного этим определением bean-компонента. Этот единственный экземпляр хранится в кэше таких одноэлементных компонентов, и все последующие запросы и ссылки для этого именованного компонента возвращают кешированный объект.

Концепция Spring в отношении одноэлементного (синглтон) компонента отличается от паттерна синглтон, определенного в книге паттернов Gang of Four (GoF). Синглтон GoF жестко кодирует область объекта так, что для ClassLoader создается один и только один экземпляр определенного класса. Область применения синглтона Spring лучше всего описывается как для каждого контейнера и для одного компонента. Это означает, что если вы определяете один bean-компонент для определенного класса в одном контейнере Spring, контейнер Spring создает один и только один экземпляр класса, определенный этим определением bean-компонента. Область Singleton - это область по умолчанию в Spring. Чтобы определить bean-компонент как одноэлементный в XML, вы можете определить bean-компонент, как показано в следующем примере:

<bean id="accountService" class="com.something.DefaultAccountService"/>

<!-- следующее эквивалентно, но избыточно (по умолчанию используется singleton scope) -->
<bean id="accountService" class="com.something.DefaultAccountService" scope="singleton"/>


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки