У меня есть следующие классы:
public class Service
{
@Autowired
@Qualifier(Helper.BEAN_NAME)
protected Helper helper;
...
}
@Component(Helper.BEAN_NAME)
public class Helper
{
public static final String BEAN_NAME = "Helper";
...
}
@Component(Helper.BEAN_NAME)
public class ExtHelper extends Helper
{
...
}
Моя цель - не трогать классы Сервис или Помощник.Я думаю, что, дав ExtHelper то же имя бина, что и Helper, Spring будет автоматически связывать реализацию ExtHelper с Service вместо Helper.
Я вижу смешанные результаты с этим.Если ExtHelper включен в мой pom ПОСЛЕ Helper, он работает нормально.Но прежде я получаю исключение ConflictingBeanDefinitionException.Я понимаю исключение, но не то, почему я получаю его, если меняю порядок зависимостей в POM.
Мой основной вопрос заключается в том, правильно ли я делаю это концептуально.Предназначен ли @Qualifier для предотвращения такого рода переопределения автопроводки?Если нет, то каково правило, чтобы Spring разрешил конфликт, выбрав мое расширение вместо базового класса?Должен ли я расширить класс обслуживания, чтобы получить то, что я хочу?Я новичок в Spring и не совсем понимаю, как я должен делать это.