❓ Почему Spring по умолчанию создает бины как singleton?
❌
На самом деле это исторический баг! Изначально Spring создавал новый бин для каждого запроса, но один из разработчиков забыл добавить new в цикле, и все бины стали синглтонами. Теперь это называют фичей для совместимости с легаси-кодом! 🎅
Праздничный факт: Если добавить @Scope("christmas"), Spring будет создавать новый бин только 31 декабря! Идеально для сезонных акций! 🎄
✔️
Почему singleton — это дефолт:
→ Производительность: создание объекта — дорогая операция (выделение памяти, вызов конструктора, DI). Создавать бин на каждый запрос — огромные издержки.
→ Управление системными ресурсами: многие бины инкапсулируют ресурсы операционной системы или сети, которые дорого создавать и должны быть общими.
→ Естественная модель для stateless компонентов: 90%+ бизнес-логики в Spring — stateless операции. Создавать новый объект для каждого вызова бессмысленно.
→ Экономия ресурсов: один EntityManager, один RestTemplate, один connection pool
→ Кэширование: бин может безопасно кэшировать данные (если они read-only)
→ Простота жизненного цикла: @PostConstruct выполнится один раз
🐸 Библиотека собеса по Java
@spring
Post #1176
2.41K
- 😁 9
- 👍 6
- ❤ 1
- 🔥 1