Мне пришлось разработать старый проект, в котором используется 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
, когда вся среда одинакова?
Хм ... нет applicationContext.xml.
Это все, что я могу найти относительно контекста приложения: открытый класс @Service ApplicationContextProvider реализует ApplicationContextAware {public void setApplicationContext (ApplicationContext applicationContext) бросает BeansException {AppContext.setApplicationContext (applicationContext); }}
в 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>
build.gradle
тоже такой же?
Да, не меняли.
Пожалуйста, поделитесь и своим applicationContxt.xml