Singleton удобен для переиспользуемых stateless-сервисов: один экземпляр на bean definition в контейнере. Дорогим бывает не сам new, а инициализация зависимостей, ресурсов и инфраструктуры вокруг объекта.
Почему scope singleton выбран по умолчанию для бинов, и почему создание объекта считается дорогой операцией?
Singleton удобен для переиспользуемых stateless-сервисов: один экземпляр на bean definition в контейнере. Дорогим бывает не сам new, а инициализация зависимостей, ресурсов и инфраструктуры вокруг объекта.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Singleton удобен для переиспользуемых stateless-сервисов: один экземпляр на bean definition в контейнере. Дорогим бывает не сам new, а инициализация зависимостей, ресурсов и инфраструктуры вокруг объекта.
Обычная аллокация небольшого объекта в JVM часто дешева. Но bean может строить кэш, открывать ресурсы и проходить post-processors, поэтому постоянное пересоздание не всегда разумно. Singleton не означает единственный объект во всей JVM и не обеспечивает потокобезопасность. Пользовательское изменяемое состояние нельзя хранить в общем сервисе без необходимой изоляции.