Получил неудовлетворенную зависимость, выраженную через параметр конструктора 0 при изучении SpringJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получил неудовлетворенную зависимость, выраженную через параметр конструктора 0 при изучении Spring

Сообщение Anonymous »


Я изучаю Spring по книге «Весна начни здесь». Здесь я добавил 2 bean-компонента класса Parrot в контекст Spring и пытаюсь внедрить bean-компонент Parrot2 в класс Person, используя автоматическое подключение через конструктор. Тем не менее, я продолжаю получать

«Неудовлетворенная зависимость, выраженная через параметр конструктора 0: нет доступного квалифицирующего компонента типа beans.Parrot: ожидался один соответствующий компонент, но обнаружено 2: ошибка parrot1, parrot2». Я не понимаю, как это произошло, потому что не думал, что возникнет проблема, поскольку параметр конструктора класса Person соответствует имени bean-компонента parrot2.

Класс конфигурации:

конфигурация пакета; импортная фасоль.Попугай; импортировать org.springframework.context.annotation.Bean; импортировать org.springframework.context.annotation.ComponentScan; импортировать org.springframework.context.annotation.Configuration; @Конфигурация @ComponentScan(basePackages = "beans") общественный класс ProjectConfig { @Бин публичный попугай parrot1() { Попугай p = новый попугай(); p.setName("Коко"); вернуть р; } @Бин публичный попугай parrot2() { Попугай p = новый попугай(); p.setName("Мики"); вернуть р; } } Класс попугаев:

пакетные компоненты; общественный класс Parrot { частное имя строки; публичная строка getName() { вернуть имя; } public void setName (имя строки) { это.имя = имя; } @Override публичная строка toString() { вернуть «Попугай:» + имя; } Класс человека:

пакетные компоненты; импортировать org.springframework.stereotype.Component; @Компонент общественный класс Person { частное имя строки = «Элла»; частный финальный попугай Parrot; публичный человек (попугай parrot2) { this.parrot = parrot2; } публичная строка getName() { вернуть имя; } public void setName (имя строки) { это.имя = имя; } публичный попугай getParrot() { вернуть попугая; } } Основной класс:

пакет основной; импортировать бобы.Человек; импортировать конфигурацию.ProjectConfig; импортировать org.springframework.context.annotation.AnnotationConfigApplicationContext; общественный класс Main { public static void main(String[] args) { контекст вар = новый AnnotationConfigApplicationContext(ProjectConfig.class); Человек p = context.getBean(Person.class); System.out.println("Имя человека: " + p.getName()); System.out.println("Попугай человека: " + p.getParrot()); } } Ошибка:

Неудовлетворительная зависимость, выраженная через параметр конструктора 0: нет доступного квалифицирующего компонента типа beans.Parrot: ожидался один соответствующий компонент, но найдено 2: parrot1, parrot2 Исключение в потоке «основной» org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем «person», определенным в файле [C:\Users\Ian36\IdeaProjects\BENAS\target\classes\beans\Person.class]: неудовлетворительная зависимость, выраженная через параметр конструктора 0: нет подходящего компонента типа beans.Parrot: ожидался один соответствующий компонент, но он найден 2: parrot1, parrot2 в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) в org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:960) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) в org.springframework.context.annotation.AnnotationConfigApplicationContext.(AnnotationConfigApplicationContext.java:93) в main.Main.main(Main.java:9) Вызвано: org.springframework.beans.factory.NoUniqueBeanDefinitionException: нет доступного квалификационного bean-компонента типа beans.Parrot: ожидался один соответствующий bean-компонент, но обнаружено 2: parrot1, parrot2 в org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218) в org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) в org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... еще 14 Процесс завершен с кодом завершения 1 Я попробовал использовать @Qualifier, чтобы посмотреть, изменит ли это что-нибудь, но все равно получаю ту же ошибку.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»