Руководство по Spring. Внедрение зависимостей.

Для того, чтобы конечный пользователь мог видеть на экране своего устройства, любое Java-приложение имеет несколько объектов, которые взаимодействуют друг с другом. При написании масштабных и сложных проектов с использованием технологии Java, максимальная независимость классов друг от друга является критической. Это позволяет применять повторное использование кода и облегчает тестирование и поддержание проекта.

И здесь нам на помощь приходит такое понятие, как внедрение зависимостей, которое позволяет нам связывать эти классы друг с другом, при этом сохраняя их независимыми друг от друга.

Рассмотрим некое “сферическое” приложение “в вакууме” которое проверяет правильность ответа на определённый вопрос в ходе экзамена. Пример приложения: исходный код проекта можно скачать по ЭТОЙ ССЫЛКЕ.

Структура проекта:

dependecnyStructure

Класс Exam.java:

dependencyExam

Класс AnswerChecker.java:

dependencyAnswerChecker

Класс ExamRunner.java:

dependencyExamRunner

Конфигурационный файл exam-config.xml:

exam-config-xml

Результат работы программы:

dependencyExamRunnerResult

Что мы можем видеть в этом приложении?

Класс Exam не должен беспокоиться о том, кто и как будет проверять правильность ответов. Его задача, просто “провести экзамен”, вызван экземпляр класса AnswerChecker, в котором и будет реализовано бизнес-логика проверки. Это значит, что при необходимости мы сможем просто написать другую реализацию проверки правильности ответа и вызвать экземпляр этого класса-“проверяльщика”.

Мы увидели, что внедрение зависимостей (DI) сделало более удобным и легко изменяемым даже такое маленькое и примитивное приложение. А когда Вы будете участвовать в разработке реальных проектов, Вы увидите, насколько DI облегчает жизнь разработчикам.