Ответ
По умолчанию в Spring все бины имеют scope singleton.
Что это означает: Контейнер Spring IoC создает и возвращает один и тот же экземпляр бина при каждом запросе или внедрении зависимости.
Пример бина по умолчанию:
@Component // Или @Service, @Repository, @Controller
public class DefaultSingletonService {
// Этот бин будет существовать в единственном экземпляре в контексте приложения
}
Другие доступные scopes в Spring:
prototype– новый экземпляр создается при каждом запросе бина.request– экземпляр живет в рамках одного HTTP-запроса (только для веб-приложений).session– экземпляр живет в рамках HTTP-сессии пользователя (только для веб-приложений).application– экземпляр живет в рамкахServletContext(аналог singleton, но с семантикой веб-уровня).websocket– экземпляр живет в рамках сессии WebSocket.
Как изменить scope:
Используйте аннотацию @Scope.
@Component
@Scope("prototype")
public class PrototypeService { /* Новый экземпляр при каждом инжекте */ }