Какие Spring Scope знаешь?

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

Короткий ответ

Основные области видимости Spring: Singleton, Prototype, Request, Session, Application, WebSocket.

Длинный ответ

В Spring Framework предусмотрены следующие области видимости (scopes):

 

- Singleton (по умолчанию):
Создается единственный экземпляр бина на контейнер IoC, который повторно используется для всех запросов.
Пример:

@Component
@Scope("singleton")
public class MySingletonBean {
}

 

- Prototype:
Новый экземпляр бина создается для каждого запроса. Это полезно, когда требуется отдельный объект для каждой задачи.
Пример:

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

 

- Request (только для веб-приложений):
Создается один экземпляр бина для каждого HTTP-запроса. Бин существует только в течение обработки запроса.
Пример:

@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyRequestBean {
}

 

- Session (только для веб-приложений):
Создается один экземпляр бина на каждую HTTP-сессию. Удобен для хранения пользовательских данных.
Пример:

@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MySessionBean {
}

 

- Application (только для веб-приложений):
Создается один экземпляр бина для всего сервлет-контекста. Используется для данных, общих для всех пользователей.
Пример:

@Component
@Scope(value = "application", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyApplicationBean {
}

 

- WebSocket (только для приложений с WebSocket):
Создается один экземпляр бина для каждого WebSocket-соединения. Подходит для управления данными в сеансе WebSocket.
Пример:

@Component
@Scope(value = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyWebSocketBean {
}

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Spring

Подпишись на Java Developer в телеграм