Компоненты / классы Java должны быть максимально независимыми от других классов Java.Это увеличивает возможность повторно использовать эти классы и тестировать их независимо от других классов (модульное тестирование).Чтобы отделить компоненты Java от других компонентов Java, в них должна быть внедрена зависимость от определенного другого класса, а не сам класс создает / находит этот объект.
Класс A имеет зависимость от класса B, если класс A использует классB как переменная.
Если используется внедрение зависимостей, то класс B передается классу A через конструктор класса A - это называется конструкционным внедрением;или через установщик - это называется инъекцией сеттера
Общая концепция внедрения зависимости называется инверсией управления.Класс не должен настраиваться сам по себе, но должен настраиваться извне.
Конструкция, основанная на независимых классах / компонентах, увеличивает возможность повторного использования и возможность тестирования программного обеспечения.Например, если класс A ожидает Dao (объект доступа к данным) для получения данных из базы данных, вы можете легко создать другой тестовый объект, который проверяет соединение с базой данных и вставляет этот объект в A для проверки A, не имея фактического соединения с базой данных.
Разработка программного обеспечения на основе внедрения зависимостей возможна при использовании стандартной Java.
Spring просто добавляет некоторые упрощения в использовании внедрения зависимостей, предоставляя стандартный способ предоставления конфигурации и управляя ссылкой на созданныйобъекты.
Когда Spring инициализирует свой контекст, он создает все определенные bean-компоненты, определенныеСтремитесь в приложении Spring файл context.xml.Теперь предположим, что ваш Бин A имеет зависимость от B, тогда Obj для B уже с Spring, так как он был успешно создан во время инициализации Spring.Затем Spring будет искать метод установки в классе A и установит там объект Obj.