Приложение, ориентированное на внедрение зависимостей , как правило, более тестируемое, поскольку ресурсы легко заменяются ресурсами, ориентированными на тестирование. Рассмотрим объект службы, который использует объект доступа к данным; в процессе работы вы вводите DAO, который взаимодействует с внутренним хранилищем данных. Но для каждого теста вы можете создать DAO, которая возвращает конкретные известные данные; это позволяет вам сосредоточиться на тестируемом объекте.
Spring - одна из многих инфраструктур внедрения зависимостей для Java, хотя и самая популярная; любая структура DI даст вам такую выгоду.