Внезапно NoUniqueBeanDefinitionException

Мне пришлось разработать старый проект, в котором используется Spring с аннотациями.

Я получил его от SVN (без изменений с момента последнего развертывания), сгенерировал войну, используя Gradle, как обычно, развернул его в Tomcat с той же версией, что и раньше, и попытался запустить с той же версией Java. Все как всегда, кроме используемой версии Eclipse.

Проблема в том, что я получаю NoUniqueBeanDefinitionException для каждого поля, которое определяет класс, расширяющий абстрактный класс. Это как если бы Spring по какой-то причине не может определить, какой класс использовать, даже если он указан в сигнатуре метода:

@Autowired
@Override
protected void setEntityDao(ListboxItemDao entityDao) {...}

Где ListboxItemDao расширяет GenericDao

И я получаю это исключение:

org.springframework.beans.factory.NoUniqueBeanDefinitionException:
No qualifying bean of type [com.section.generic.dao.GenericEntityDao] is defined:
expected single matching bean but found 32: listboxItemDao, anotherDao1, anotherDao2...

Я вижу, что могу исправить это, добавив @Qualifier("listboxItemDao"), но не понимаю, почему раньше это работало без этого @Qualifier. Очень обидно, что теперь из-за небольшого изменения мне приходится добавлять этот @Qualifier ко всем сервисам ...

Что могло случиться, что теперь мне нужен этот @Qualifier, когда вся среда одинакова?

Пожалуйста, поделитесь и своим applicationContxt.xml

codeLover 05.09.2018 11:54

Хм ... нет applicationContext.xml.

daniel sp 05.09.2018 11:59

Это все, что я могу найти относительно контекста приложения: открытый класс @Service ApplicationContextProvider реализует ApplicationContextAware {public void setApplicationContext (ApplicationContext applicationContext) бросает BeansException {AppContext.setApplicationContext (applicationContext); }}

daniel sp 05.09.2018 11:59

в web.xml у меня есть: <! - Настроить ContextLoaderListener для использования AnnotationConfigWebApplicationContext вместо XmlWebApplicationContext по умолчанию -> <context-param> <param-name> contextClass </param-name> <param-value> org.springframework. web.context.support.AnnotationConfigWebA‌ pplicationContext </param-value> </context-param>

daniel sp 05.09.2018 12:06

build.gradle тоже такой же?

Bond - Java Bond 05.09.2018 14:10

Да, не меняли.

daniel sp 05.09.2018 16:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
65
0

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