Библиотека собеса по Java | вопросы с собеседований
6.37K subscribers
399 photos
9 videos
481 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/08c603b6

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Почему Spring по умолчанию создает бины как singleton?



На самом деле это исторический баг! Изначально Spring создавал новый бин для каждого запроса, но один из разработчиков забыл добавить new в цикле, и все бины стали синглтонами. Теперь это называют фичей для совместимости с легаси-кодом! 🎅

Праздничный факт: Если добавить @Scope("christmas"), Spring будет создавать новый бин только 31 декабря! Идеально для сезонных акций! 🎄

✔️

Почему singleton — это дефолт:

→ Производительность: создание объекта — дорогая операция (выделение памяти, вызов конструктора, DI). Создавать бин на каждый запрос — огромные издержки.

→ Управление системными ресурсами: многие бины инкапсулируют ресурсы операционной системы или сети, которые дорого создавать и должны быть общими.

→ Естественная модель для stateless компонентов: 90%+ бизнес-логики в Spring — stateless операции. Создавать новый объект для каждого вызова бессмысленно.

→ Экономия ресурсов: один EntityManager, один RestTemplate, один connection pool

→ Кэширование: бин может безопасно кэшировать данные (если они read-only)

→ Простота жизненного цикла: @PostConstruct выполнится один раз

🐸 Библиотека собеса по Java

@spring
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍5🔥1