Назад к вопросам
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 {
    // ...
}