Как работает внедрение зависимостей в Spring? - PullRequest
17 голосов
/ 16 сентября 2010

Я хочу знать, как весна делает инъекцию зависимости. Я хочу использовать логику низкого уровня.

Обновление:

Я хочу знать, как ссылки на объекты вводятся в конструкторы или методы установки, через Reflection или какой-либо уровень байтового кода.

Ответы [ 2 ]

15 голосов
/ 16 сентября 2010

Компоненты / классы Java должны быть максимально независимыми от других классов Java.Это увеличивает возможность повторно использовать эти классы и тестировать их независимо от других классов (модульное тестирование).Чтобы отделить компоненты Java от других компонентов Java, в них должна быть внедрена зависимость от определенного другого класса, а не сам класс создает / находит этот объект.

Класс A имеет зависимость от класса B, если класс A использует классB как переменная.

Если используется внедрение зависимостей, то класс B передается классу A через конструктор класса A - это называется конструкционным внедрением;или через установщик - это называется инъекцией сеттера

Общая концепция внедрения зависимости называется инверсией управления.Класс не должен настраиваться сам по себе, но должен настраиваться извне.

Конструкция, основанная на независимых классах / компонентах, увеличивает возможность повторного использования и возможность тестирования программного обеспечения.Например, если класс A ожидает Dao (объект доступа к данным) для получения данных из базы данных, вы можете легко создать другой тестовый объект, который проверяет соединение с базой данных и вставляет этот объект в A для проверки A, не имея фактического соединения с базой данных.

Разработка программного обеспечения на основе внедрения зависимостей возможна при использовании стандартной Java.

Spring просто добавляет некоторые упрощения в использовании внедрения зависимостей, предоставляя стандартный способ предоставления конфигурации и управляя ссылкой на созданныйобъекты.

Подробнее читайте this

Edit1 :

Когда Spring инициализирует свой контекст, он создает все определенные bean-компоненты, определенныеСтремитесь в приложении Spring файл context.xml.Теперь предположим, что ваш Бин A имеет зависимость от B, тогда Obj для B уже с Spring, так как он был успешно создан во время инициализации Spring.Затем Spring будет искать метод установки в классе A и установит там объект Obj.

Edit2:

Пожалуйста, прочитайте 5.4.1 Впрыск сеттера

10 голосов
/ 16 сентября 2010

Конфигурация зависимостей читается из XML, аннотаций или Java DSL (JavaConfig).Затем механизм Spring DI связывает зависимости на основе метаданных из конфигурации с помощью API отражения Java.

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