Сборщик мусора против IOC

Сегодня я посещаю собеседование, я новичок в java, spring boot. Интервьюер задал вопрос о сборщиках мусора. Я сказал, что сборщик мусора освободит неиспользуемый ресурс. Затем он спросил о контейнере IOC, я сказал, что он берет на себя управление созданием объекта и будет внедряться в зависимый компонент. Затем он спросил, зачем нам нужно использовать контейнер IOC. Я сказал, что он не будет создавать новый объект каждый раз, когда будет использовать существующий. Он снова спросил, хорошо, в чем проблема с созданием нового объекта, потому что сборщик мусора освободит память, тогда почему мы должны идти на IOC ..? Я застрял здесь. Пожалуйста, помогите понять это лучше

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короче говоря, вам не всегда нужны новые объекты, потому что они могу очень дороги/медленны для создания.

Контейнер IOC позволяет вашему компоненту отказаться от контроля над тем, как создаются и управляются ваши зависимости.

Например: если я создаю слой/класс DAO традиционным способом, мой слой DAO должен знать, как создать источник данных. Этим можно управлять, но представьте себе гораздо больше классов, которым теперь нужно знать, как создать источник данных.

Используйте IOC, ваш уровень DAO скажет: Эй! Мне нужен экземпляр источника данных. Теперь контейнер IOC должен найти его и предоставить вам. Вам все еще нужно предоставить IOC способ создать этот экземпляр для вас. Но в этом случае ваш уровень все DAO может оставаться сплоченный и просто делать то, что должен делать — выполнять транзакции. Это также позволит вам создавать специализированные классы/компоненты, отвечающие за обработку подключения к базе данных особым образом.

Весной все bean-компоненты по умолчанию являются одноэлементными. Это означает, что в контексте Spring будет только один экземпляр. Вам не нужно создавать их несколько раз.

Цель IOC не в том, чтобы облегчить работу GC. Это значит отпустить то, как создаются ваши компоненты и зависимости.

теперь понял, спасибо большое

sheik abdulla 20.03.2022 16:57

Другие вопросы по теме