Определить реализацию по умолчанию для внедрения в Spring?

У меня есть базовый класс, который расширен некоторыми другими классами. Поэтому я должен предоставить квалификаторы для возможности внедрения конкретного экземпляра.

Интересно, смогу ли я пометить какой-либо из этих классов (например, самый верхний класс) как класс по умолчанию, который будет выбран, если не указан классификатор @Autowired?

@Service
//@Qualifier("Parent")
class ParentRunner;

@Service
@Qualifier("Child")
class ChildRunner extends ParentRunner;

Следующее по крайней мере не работает:

@Autowired
//@Qualifier("Parent")
private ParentRunner runner;

1 ответ

Решение

Вы можете отметить одну реализацию с @Primary который будет использоваться по умолчанию. При использовании XML вы можете использовать primary элемент внутри bean элемент для установки экземпляра на основной экземпляр компонента для использования.

См. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html

Другие вопросы по тегам