Какие знаешь Bean Scope

"Bean Scope" (область видимости бина) определяет жизненный цикл и видимость бинов (объектов, управляемых Spring IoC контейнером). Вот основные области видимости бинов:

1. Singleton

Это область видимости по умолчанию. Spring IoC контейнер создаёт единственный экземпляр бина на весь контейнер. Этот бин кэшируется, и все последующие запросы на получение бина с таким же идентификатором будут возвращать тот же объект.

2. Prototype

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

3. Request

Эта область видимости применяется только в веб-приложениях. Бин с областью видимости Request создаётся каждый раз при выполнении HTTP-запроса. Такой бин живёт в пределах одного запроса.

4. Session

Также используется в веб-приложениях. Бин с областью видимости Session создаётся на время жизни HTTP-сессии. Это означает, что бин связан с конкретной сессией пользователя.

5. Application

Создаётся на время жизни ServletContext, что означает, что бин существует в пределах всего веб-приложения, а не в пределах одного запроса или сессии.

6. WebSocket

Живёт в пределах жизненного цикла WebSocket-сессии. Эта область видимости полезна для работы с веб-сокетами в веб-приложениях.

Примеры:

@Component
@Scope("singleton") // Это не обязательно, так как singleton является областью видимости по умолчанию
public class SingletonBean {}

@Component
@Scope("prototype")
public class PrototypeBean {}

@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class RequestBean {}

Выбор области видимости бина зависит от требуемого жизненного цикла и видимости объекта в приложении. Singleton подходит для глобальных настроек или кэшированных данных, Prototype — для независимых операций, Request и Session — для данных, специфичных для пользователя в веб-приложениях.

March 22, 2024, easyoffer