Предположим, что у вас есть один интерфейс
public interface A {
public void doSomething();
}
и два класса реализации
@Component(value="aImpl1")
public class AImpl1 implements A {
}
@Component(value="aImpl2")
public class AImpl2 implements A{
}
И, наконец, класс, который будет использовать реализацию "A":
@Component
public class MyClass {
@Autowire
A a;
}
Теперь, если я хочу добавить AImpl1, я добавляю @Qualifier ( "aImpl1" ), а если я хочу добавить AImpl2, я добавляю @Qualifier ( "aImpl2" )
Вопрос: Можно ли как-то проинструктировать spring все реализации "A" в этом случае AImpl1 и AImpl2 и использовать некоторые специальные приложения для выбора наиболее подходящей реализации? например, в этом случае моя конвенция может использовать реализацию с наибольшим суффиксом (т.е. AImpl2)?
EDIT: класс MyClass вообще не должен знать о логике поиска реализации, он должен просто найти свое свойство "a" с объектом AImpl2.