Назад к вопросам
Middle
69
questionbank
Какие существуют области видимости (scopes) у бинов в Spring?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Spring Framework существует несколько стандартных областей видимости бинов:
- singleton
- prototype
- request
- session
- application
- websocket
| Область видимости | Описание |
|---|---|
| singleton | Один экземпляр бина на каждый контекст Spring. По умолчанию. |
| prototype | Новый экземпляр бина создается при каждом запросе. |
| request | Один экземпляр бина на каждый HTTP-запрос. |
| session | Один экземпляр бина на каждую HTTP-сессию. |
| application | Один экземпляр бина на контекст ServletContext. Используется веб-приложениями. |
| websocket | Один экземпляр бина на каждую WebSocket-сессию. |
Области видимости request, session, application и websocket актуальны в веб-контексте (например, при использовании Spring MVC).
Указать область видимости можно с помощью аннотации @Scope:
// Пример singleton
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("singleton") // Явно указываем, хотя это и дефолт
public class SingletonBean {
// ...
}
// Пример prototype
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
public class PrototypeBean {
// ...
}