Как правильно объяснить свое понимание IOC интервьюеру?

Spring

1.1 Что такое IoC Ioc-Inversion of Control, то есть «инверсия управления», это не технология, а дизайнерская идея. В Java-разработке Ioc означает передачу созданного вами объекта элементу управления контейнером, а не традиционному прямому управлению внутри вашего объекта. Как хорошо понять Ioc? Ключом к пониманию Ioc является прояснение того, «кто кого контролирует, что контролирует, почему он реверсирован (если есть реверс, то должен быть поворот вперед), и какие аспекты реверсированы», то давайте проанализируем это подробно:

Кто кого и что контролирует:

В традиционном программировании на Java SE мы создаем объекты непосредственно внутри объекта через new, а программа активно создает зависимые объекты, при этом у IoC есть специальный контейнер для создания этих объектов, то есть Ioc-контейнер управляет созданием объектов, кто контролирует, кто ? Конечно, контейнер IoC управляет объектом, но что? То есть он в основном контролирует получение внешних ресурсов (а не только объектов, включая файлы и т. д.).

Почему он перевернут, и какие аспекты он перевернул:

Существует прямой поворот, и традиционное приложение сделано нашим собственным активным управлением для непосредственного получения объекта зависимости, который является прямой; и обратный контейнер, который помогает создавать и вводить зависимость; почему это инверсия? Поскольку контейнер помогает нам находить и внедрять зависимые объекты, объект только пассивно принимает зависимые объекты, поэтому он инвертируется; какие аспекты реверсируются? Приобретение зависимости обращается

Что IoC может сделать IoC

Не техника, а просто идея, важный принцип объектно-ориентированного программирования, он может указать нам, как разрабатывать слабосвязанные, более качественные программы. В традиционных приложениях мы активно создаем зависимые объекты внутри класса, что приводит к высокой связанности между классами и затрудняет тестирование; с контейнером IoC управление созданием и поиском зависимых объектов передается контейнеру, а контейнер Внедряя и комбинируя объекты, объекты слабо связаны, что также удобно для тестирования, что способствует функциональному повторному использованию, и что более важно, делает всю архитектуру программы очень гибкой.

IoC (инверсия управления) Прежде всего, я хочу поговорить об IoC (инверсия управления, инверсия управления).

Это ядро ​​Spring, которое работает всегда. Так называемый IOC для фреймворка Spring — это связь между жизненным циклом объекта и связью между объектом объекта. Что это значит, приведите простой пример, как мы ищем девушку? Общие случаи, мы должны увидеть, где есть красивое тело и хороший мм, затем узнать об их увлечениях, номере QQ, номере телефона, номере IP, номере IQ ......... Я хочу их узнать, проголосовать Отправлю вам, тогда хе-хе... Процесс этот сложный, надо оформлять и облицовывать каждую ссылку. Традиционная разработка программы также имеет место в объекте, если вы хотите использовать другой объект, вы должны получить его (один из вас или запрос из JNDI), вы должны уничтожить объект (например, соединение и т. д.) , Объекты будут заканчиваться другими интерфейсами или классами. Итак, как поживает МОК? Это немного похоже на брак с подругой, представляющий третью сторону между мной и подругой: представление о браке. Брак включает в себя множество мужских и женских материалов, я могу составить список на свадьбу, рассказать, какая подруга, например, Ли Цзясинь, тело, как у Линь Сизэй, пение, как Джей Чоу, скорость, как Карлос, технологии. дело класс, то брак обеспечит мм по нашим требованиям, нам нужно только поговорить с ней, жениться. Просто, если нам дадут свадьбу, мы выкинем исключение. Весь процесс больше не контролируется мной, а механизмом, который женится на подобном контейнере для контроля. Это тот случай, все классы будут прописаны в контейнере Spring, сообщая Spring, что вам нужно, что вам нужно, тогда Spring возьмет вещь, когда вы запустите ее должным образом, И также даст вам то, что вам нужно для вас. Все классы создаются, уничтожаются спрингом, то есть контрольный целевой цикл выживания уже не ссылается на объект, а на спринг. Для конкретного объекта раньше он управлял другими объектами, а теперь все объекты контролируются Spring, поэтому это называется реверсированием управления.

Одним из ключевых моментов DI (внедрения зависимостей) IoC является динамическое обеспечение объекта другими объектами, которые ему нужны, во время работы системы.

Это достигается с помощью DI (внедрение зависимостей). Например, для работы с базой данных требуется объект A. В прошлом нам всегда приходилось писать код в A, чтобы получить объект Connection. С Spring нам нужно только сообщить Spring, что Connection требуется в A. Что касается того, как построить это Соединение, когда его построить, А не нужно знать. Когда система работает, Spring создаст Connection в соответствующее время, а затем введет его в A как инъекцию, тем самым завершив контроль отношений между различными объектами. A должен полагаться на Connection для нормальной работы, и это Connection внедряется в A с помощью spring, поэтому название внедрения зависимостей происходит от. Так как же реализован DI? Важной функцией после Java 1.3 является отражение, которое позволяет программам динамически генерировать объекты, выполнять методы объектов и изменять свойства объектов во время выполнения Spring реализует внедрение через отражение. После понимания концепции IoC и DI все станет просто и понятно, а остальная работа — просто укладка дров в рамках spring.