Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Spring: singleton, spring, prototype, request, session, application, websocket

Какие 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

    Spring

Ключевые слова

#singleton

#spring

#prototype

#request

#session

#application

#websocket

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