Внедрение в конструктор (параметры конструктора) включает поля final, делает невозможным забыть необходимые зависимости и не требует контейнера для модульного тестирования. Внедрение сеттера допускает необязательные зависимости, но допускает неполное построение. Внедрение поля (@Autowired в поле) является наименее шаблонным, но скрывает зависимости и требует создания контейнера/отражения — внедрение конструктора является рекомендуемым по умолчанию.
Итог
Внедрение в конструктор (параметры конструктора) включает поля final, делает невозможным забыть необходимые зависимости и не требует контейнера для модульного тестирования.