Sobes.tech
Back to questions
Junior — Middle
58

Могли бы вы перечислить и описать различные области видимости, используемые для бинов в Spring?

Companies where asked
АЙ-ТЕКОАЙ-ТЕКО
Stroki
Y_lab development
ИннотехИннотех
МТСМТС
Red Collar
Right Line
Prime
AstonAston
Тетрасофт
айтеко

Answer from AI

sobes.tech AI

В Spring Framework существуют несколько областей видимости (scopes) для бинов, которые определяют время жизни и видимость экземпляров бинов:

  1. singleton (по умолчанию) — один экземпляр бина создаётся на весь контейнер Spring. Все запросы к этому бину получают один и тот же объект.

  2. prototype — при каждом запросе к контейнеру создаётся новый экземпляр бина.

  3. request — бин живёт в течение одного HTTP-запроса. Используется в веб-приложениях, каждый HTTP-запрос получает свой экземпляр.

  4. session — бин живёт в течение HTTP-сессии пользователя.

  5. application — бин живёт в пределах ServletContext, то есть в рамках всего веб-приложения.

  6. websocket — бин живёт в течение WebSocket-сессии.

Пример объявления с областью видимости:

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

Выбор области видимости зависит от требований к жизненному циклу и состоянию бина в приложении.