Почему весенний DI / IoC считается более изолированным, чем обычный OO? - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь узнать весну, исходящую из обычного ОО фона.

В обычном OO, если вы хотите отделить зависимость. Вы могли бы сделать это

Car car = CarFactory.getCar();

, где вы можете использовать BigCar и SmallCar, реализующие автомобиль.

Весной зависимость развязывается на

@Autowire
BigCar car;

или настраивается через XML.

Вопрос в том, как это более разъединено ? Во всех 3 случаях вы либо

  1. измените 1 строку кода на своем заводе
  2. измените 1 строку кода ниже @ Autowire
  3. измените 1 строку кода XML

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Весной есть концепция, которая называется Inversion of Control (IoC). В основном это означает,

Инверсия управления - это принцип в разработке программного обеспечения, посредством которого управление объектами или частями программы переносится в контейнер или структуру.

Вы можете проверить это здесь https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring

Таким образом, используя пружину, мы не создаем объекты там, где нам нужно, но делегируем эту ответственность пружине, просто уведомляя, где она должна быть создана. ,В приведенном выше примере с помощью @ Autowired . Который явно слабосвязан, чем в ОО-дизайне.

0 голосов
/ 17 октября 2019

Внедрение зависимостей более разъединено, потому что объект, который хочет ссылку на Автомобиль (в этом примере), не должен содержать какой-либо код, который извлекает или создает Автомобиль. В случае внедрения зависимости контейнер внедрения зависимости создает компоненты, устанавливает отношения и удовлетворяет зависимости между компонентами. Создание бина полностью отделено от кода, который использует бины;это может быть определено в форме конфигурации Java или XML в случае Spring. Дополнительным преимуществом является то, что внедрение зависимостей устанавливает единый механизм для установления отношений и удовлетворения зависимостей между компонентами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...