Spring Start Here 3 Flashcards

1
Q

Области видимости бинов (scope)

A
  1. Singleton - @Scope(“singleton”)
  2. Prototype - @Scope(“prototype”)
  3. Request (запрос) - @Scope(“request”)
  4. Session (сессия) - @Scope(“session”)
  5. Application - @Scope(“application”)
  6. WebSocket - @Scope(“websocket”)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Область видимости Singleton

A

По умолчанию.

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

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

Желательно обеспечить неизменяемость бина для обеспечения потокобезопасности.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Области видимости Prototype

A

Каждый запрос на получение бина приводит к созданию нового экземпляра.
Контейнер создаёт новый бин всякий раз, когда он нужен, но сам не управляет его дальнейшим жизненным циклом.

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

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Области видимости Request

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Области видимости Session

A

Только для веб-приложений
Бин создаётся один раз на каждую HTTP-сессию и остаётся доступным, пока существует эта сессия.
Используется для хранения данных, специфичных для сессии пользователя, например, временные данные авторизации.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Области видимости Application

A

Только для веб-приложений
Создаётся один экземпляр бина на весь жизненный цикл веб-приложения. Бин существует так же долго, как и ServletContext.
Подходит для компонентов, которые должны быть едины для всех пользователей и сессий в пределах всего веб-приложения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Области видимости WebSocket

A

Для приложений с поддержкой WebSocket
Создаётся один бин на каждую WebSocket-сессию. Бин существует так долго, как длится соединение WebSocket.
Используется для хранения состояния, специфичного для сессии WebSocket, например, для хранения данных о подключении.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

“Ленивое” создание бинов

A

Компонент создаётся только в момент, когда происходит первое обращение к данному бину.
Достигается путём применения аннотации @Lazy.
Лучше не использовать.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Жизненный цикл бина

A
  1. Создание;
  2. Внедрение зависимостей (Dependency Injection);
  3. Настройка (Setting Bean Properties):
  4. Постобработка бина (Bean Post Processing);
  5. Инициализация (Bean Initialization);
  6. Постобработка после инициализации (Post Processing After Initialization);
  7. Использование бина;
  8. Завершение и уничтожение (Bean Destruction);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly