Не удалось автоматически подключить метод - PullRequest
5 голосов
/ 26 декабря 2011

Я получаю эту ошибку

org.springframework.beans.factory.BeanCreationException: 
Could not autowire method:

Это xml-конфигурация моей весны.

<bean ...>   
...
    <property name="InfoModel" ref="InfoModel"></property>
</bean>

Вот мой код, где я автоматически подключаю его в классе Java

  private InfoModel infoModel;

  @Autowired
  public void setInfoModel(InfoModel infoModel) {
    this.infoModel= infoModel;
  }

Я что-то упустил?Я подозреваю, что я должен сделать Interface из InfoModel , чтобы сделать его автоматическим?

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.model.InfoModel] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:547)

Ответы [ 4 ]

11 голосов
/ 26 декабря 2011

если вы делаете @Autowired, вам не нужно отмечать его как свойство в xml. просто объявите InfoModel как bean в XML и удалите property из xml для вашего bean-компонента, в который вы ввели InfoModel

Подведение итогов

1 Вам нужно определение bean-компонента в XML для InfoModel

2 Вам необходимо удалить property из XML

3 Убедитесь, что вы создали контекстную аннотацию, добавив

<context:annotation-config />
1 голос
/ 27 декабря 2011

Если в трассировке стека указано, что нет соответствующих бинов указанного типа, то это неправильно.

Добавьте компонент InfoModel в контекст приложения Spring, например, объявив компонент в той же конфигурации xml:

<bean id="InfoModel" class="com.model.InfoModel" />

кстати.Вы не должны использовать первую букву идентификатора компонента, используя те же правила именования, что и для переменных, т. е.lowerCamelCase.Автопроводка и явное внедрение зависимости также являются излишними.

0 голосов
/ 26 декабря 2011

Правильно ли вы аннотировали класс InfoModel с помощью аннотации уровня типа, такой как @Component, @Service или @Repository. Все они очень похожи. Если ваш InfoModel не аннотирован должным образом, вы получите эту знаменитую ошибку «Нет подходящего компонента ...». Попробуйте пометить класс InfoModel с помощью @Component, чтобы он выглядел следующим образом:

@Component
public class InfoModel {
  // code
}
0 голосов
/ 26 декабря 2011

Я думаю, вам следует написать @Autowired перед закрытой декларацией Info .... и удалите запись из xml, как упомянуто jigar.

...