Ответ
По умолчанию в Spring Framework все бины имеют scope singleton.
Что это означает:
- Контейнер Spring IoC создаёт ровно один экземпляр этого бина.
- Все запросы и инъекции этого бина получают один и тот же общий объект.
Пример и особенности:
@Component // Или @Service, @Repository, @Bean в конфигурации
public class DefaultService {
// Этот бин будет singleton
}
Важные аспекты singleton scope:
- Время жизни: Создаётся при инициализации контекста (если не
@Lazy) и живёт до его уничтожения. - Потокобезопасность: Не является потокобезопасным по умолчанию. Разработчик должен самостоятельно обеспечить синхронизацию, если бин используется в многопоточной среде (например, в веб-приложении).
- Производительность: Самый эффективный scope с точки зрения памяти и производительности.
Для использования других областей видимости (например, prototype, request, session) аннотацию @Scope необходимо указывать явно.