Для чего нужны scope bean в Spring?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Scope bean в Spring определяет жизненный цикл бина и области его видимости. Он управляет тем, как создаются, используются и уничтожаются экземпляры бина в контексте приложения.
Основные стандартные области видимости:
- singleton: Один экземпляр бина на IoC-контейнер. Это область видимости по умолчанию.
- prototype: Новый экземпляр бина создается каждый раз при запросе.
- request: Один экземпляр бина на HTTP-запрос. Актуально для веб-приложений.
- session: Один экземпляр бина на HTTP-сессию. Актуально для веб-приложений.
- application: Один экземпляр бина на контекст ServletContext. Актуально для веб-приложений.
Пример настройки области видимости:
Через аннотацию @Scope:
@Component
@Scope("prototype") // или @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class MyPrototypeBean {
// ...
}
Через XML-конфигурацию:
<bean id="mySingletonBean" class="com.example.MySingletonBean" scope="singleton"/>
<bean id="myPrototypeBean" class="com.example.MyPrototypeBean" scope="prototype"/>
Выбор области видимости зависит от потребностей приложения и природы самого бина. Singleton подходит для stateless-сервисов, тогда как prototype используется для stateful-бина, который может меняться в зависимости от контекста использования. Request, session и application применяются в веб-приложениях для управления состоянием на уровне запроса, сессии или всего приложения соответственно.