В чем разница между аннотацией @Qualifier и интерфейсом?
`@Qualifier` позволяет сделать несколько реализаций одного и того же интерфейса.
Маркерный интерфейс - не всегда вариант. Например, если нужно несколько соединений с базами данных, то нужен интерфейс `DataSource` для всех. А наследоваться от его реализаций, чтобы добавить этот самый маркерный интерфейс - это даже не всегда возможно. Например, если DataSource реализуется где-то глубоко внутри пула соединений или драйвера JDBC.
Не нужно плодить сущности без надобности.
Если сделать все через интерфейсы, то для трех, допустим, реализаций нам понадобится 4 файла - базовый интерфейс с методами, и три наследника, которые будут выполнять роль селектора.
Через @Qualifier все это не нужно.