TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #62 5.32K
Какие Spring Scope есть ?
Спросят с вероятностью 44%

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

1️⃣ Singleton: Это область видимости по умолчанию. Бин с данной областью видимости создается один раз на каждый контейнер Spring IoC и кэшируется для последующих запросов. Все запросы на получение бина возвращают один и тот же экземпляр бина.
@Component
@Scope("singleton")
public class MySingletonBean {
}


2️⃣ Prototype: Бин с данной областью видимости создается заново каждый раз, когда он запрашивается из контейнера. Это полезно, когда необходимы разные экземпляры бина для разных задач.
@Component
@Scope("prototype")
public class MyPrototypeBean {
}


3️⃣ Request: Эта область видимости используется в веб-приложениях. Бин создается для каждого HTTP-запроса и уничтожается после обработки запроса. Бины с данной областью видимости доступны только в контексте одного HTTP-запроса.
@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyRequestBean {
}


4️⃣ Session: Бин с данной областью видимости создается для каждой пользовательской сессии. Бин живет в течение всей сессии и уничтожается, когда сессия завершается. Это полезно для хранения информации, специфичной для пользователя, в течение всего времени его сессии.
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MySessionBean {
}


5️⃣ Application: Бин с данной областью видимости создается один раз для всего сервлет-контекста. Это полезно для данных, которые должны быть общими для всех пользователей и сессий в приложении.
@Component
@Scope(value = "application", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyApplicationBean {
}


6️⃣ WebSocket: Бин с данной областью видимости создается для каждой сессии WebSocket. Это полезно для работы с данными, специфичными для каждой WebSocket-сессии.
@Component
@Scope(value = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyWebSocketBean {
}


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

Spring предлагает разные области видимости для бинов, такие как Singleton, Prototype, Request, Session, Application и WebSocket, которые определяют, как и когда бины будут создаваться, жить и уничтожаться. Это позволяет управлять жизненным циклом бинов в соответствии с потребностями приложения.

➡️ Примеры ответов
➡️ Список всех вопросов на Java Developer

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
  • 👍 27
  • ❤ 1
  • 🔥 1
More from @easy_java_ru
  1. Oct 12, 2026🤔 Жизненный цикл сервлетов? 1. Загрузка и инициализация (init); 2. Обработка запроса (ser…
  2. Oct 12, 2026🤔 Как остановить поток? Остановить поток в Java можно несколькими способами, но важно пом…
  3. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  4. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  5. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  6. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →