В общем случае рекомендуется внедрять зависимости через конструктор. Но необязательные зависимости рекомендуется внедрять через сеттер.
В этой статье пойдет речь о @Conditional бин.
Читать далее «@Conditional бин и необязательная зависимость @Autowired(required=false)»