Главная страница
Навигация по странице:

  • Spring Bean

  • 2. Виды бинов ( Beans types )

  • Атрибут scope

  • Виды бинов по области видимости

  • Ревью 2 теория. Инструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми


    Скачать 0.74 Mb.
    НазваниеИнструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми
    АнкорРевью 2 теория
    Дата04.09.2022
    Размер0.74 Mb.
    Формат файлаdocx
    Имя файла2.docx
    ТипИнструкция
    #661724
    страница1 из 26
      1   2   3   4   5   6   7   8   9   ...   26

    1. Что такое бин (Bean)?


    Spring Bean— это класс, созданием экземпляров которых и установкой в нем зависимостей управляет контейнер фреймворка Spring. Бины предназначены для реализации бизнес-логики приложения.

    Эти объекты создаются с помощью конфигурационных метаданных, которые указываются в контейнере (например, XML- , @Component или @Bean).

    Spring Bean представляет собой Singleton, то есть в некотором блоке приложения существует только один экземпляр данного класса. Поэтому, если бин содержит изменяемые данные в полях (другими словами, имеет состояние), то обращение к таким данным необходимо синхронизировать.

    2. Виды бинов (Beans types)?


    Виды бинов определяются, по сути, их видимостью (scope). В Spring Framework во всех определениях бизнес-сущностей (bean) явно или неявно присутствует атрибут scope.

    В Java-конфигурации он передается в аннотации @Scope, в xml – в атрибуте scope тега .

    Атрибут scope – это строка-идентификатор, которая ставит бину в соответствие экземпляр класса org.springframework.beans.factory.config.Scope. Scope – реализация паттерна «Strategy» для фабрик бинов, инструкция по созданию бизнес-объектов.

    Strategy — это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми.

    Другие объекты содержат ссылку на объект-стратегию и делегируют ей работу. Программа может подменить этот объект другим, если требуется иной способ решения задачи.

    Виды бинов по области видимости:

    1. Singleton – определяет один единственный бин для каждого контейнера Spring Inversion of Control (IoC). Режим по умолчанию.

    Если установить свойству scope значение singleton, то в это случае контейнер Spring IoC создает только один экземпляр объекта определенного в bean.

    Этот экземпляр помещается в cache-memory таких же бинов (синглтонов) и все последующие вызовы бина с таким именем будут возвращать объект из cache-memory (кэша).

    Scope Singleton чаще всего используется когда у Bean нет изменяемого состояния (когда он является stateless).

    В xml конфигурационном файле можно явно указать, что область видимости будет singleton (хоть и не требуется):





    Так же это можно сделать и в коде, используя аннотацию @Scope под аннотацией @Bean:


    2. Prototype – контейнер Spring IoC создает новый экземпляр бина на каждый полученный запрос.

    Scope Prototype чаще всего используется когда у Bean есть изменяемое состояние (когда он является stateful).

    Если внедрять prototype, то для каждого singleton будет создан уникальный prototype.

    3. Request – создается один экземпляр бина на каждый HTTP запрос. Жизненный цикл экземпляра ограничен единственным HTTP запросом; для каждого нового HTTP запроса создается новый экземпляр бина. Действует, только если вы используете web-aware ApplicationContext.

    Таким образом, если сервер в настоящее время обрабатывает 50 запросов, тогда контейнер может иметь не более 50 бинов, по одному для каждого HTTP-запроса. Любое изменение состояния одного экземпляра не будет видимо другим экземплярам. Эти экземпляры уничтожаются, как только HTTP-запрос завершен.

    4. Session – создается один экземпляр бина каждую HTTP сессию. Жизненный цикл экземпляра ограничен в пределах одной и той же HTTP Session. Действует, только если вы используете web-aware ApplicationContext

    Таким образом, если сервер имеет 20 активных сессий, тогда контейнер может иметь не более 20 бинов, по одному для каждой сессии. Все HTTP-запросы в пределах времени жизни одной сессии будут иметь доступ к одному и тому же бину.

    5. Global Session (нет в 5 версии Spring)– создается один экземпляр бина на каждую глобальную HTTP сессию. Жизненный цикл экземпляра ограничен в пределах глобальной HTTP Session (обычно при использовании portlet контекста). Действует, только если вы используете web-aware ApplicationContext;

    6. Application – жизненный цикл экземпляра ограничен в пределах ServletContext. Действует, только если вы используете web-aware ApplicationContext.

    Виден как атрибут ServletContext. Синглтон - в одном экземпляре для ApplicationContext.

    7. Custom thread scope – Spring по умолчанию не предоставляет thread scope, но его можно активировать. Каждый запрос на бин в рамках одного потока будет возвращать один и тот же бин.

      1   2   3   4   5   6   7   8   9   ...   26


    написать администратору сайта