2014-10-04 4 views
0

Может быть, вопрос Название кажется дублирующимся, но я получаю ту же ошибку и не могу найти ответ в stackoverflow.Не удалось автоподключить поле Включение автоуведомленных зависимостей не удалось

У меня есть контроллер

@Controller 
public class MyController{ 

     @Autowired 
     BeanA beanA; 

     @RequestMapping(value="/home") 
     public String showHomeScreen(){ 
      return "home"; 
     } 
    } 

Мой класс BeanA:

public class BeanA 
{ 

    private Map<Object, Object> maps; 

    //Setters,Getters 
} 

Я настроить BeanA весной конфигурации таким образом

<bean id="beanA" class="com.mycompany.beans.BeanA"> 
<property name="maps"> 
      <map> 
       <entry key="Key 1" value="1" /> 
       <entry key="Key 2" value="2" /> 
      </map> 
</property> 
</bean> 

обновление:

StackTrace:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.mycompany.beans.BeanA com.mycompany.controller.MyController.beanA ; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.mycompany.beans.BeanA] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) 

я зарегистрировал свой базовый пакет контекстной

<context:component-scan base-package="com.mycompany.*"/> 

Теперь, когда я развернуть мое приложение я получаю сообщение об ошибке не удалось autowire поля «beanA» Инъекция autowired зависимости не удалась ,

Может кто-то пожалуйста, помогите мне выйти из этой проблемы ....

+0

Ваш код не компилируется, и вы не указали трассировку стека исключения и файл конфигурации пружины. –

+0

обновил stacktrace ... Похоже, он пытается сопоставить класс BeanA с myconcontroller beanA ... вы можете видеть в трассировке стека, это говорит com.mycompany.beans.BeanA to com.mycompany.controller.MyController.beanA – pathfinder

+0

I мог видеть Bean com.mycompany.beans.BeanA не зарегистрирован .... из stacktrace: Нет квалификационного компонента типа [com.mycompany.beans.BeanA] – pathfinder

ответ

0

Вы правы @Serge Ballesta. Весна не признается Боб А. О Autowire его опечатка я обновил в исходное сообщение для Autowired

Так я добавил @component на BeanA, а также изменили контекст сканирования компонент таким образом

<context:component-scan base-package="com.mycompany.*"/> 

в

<context:component-scan base-package="com.mycompany"/> 

Но все еще не знаю, мой боб не зарегистрирован, хотя я упоминаю весной config xml.

Anywayz Теперь у меня нет ошибок, проблема решена.

1

StackTrace говорит:

  • контроллера MyController правильно сканируется Spring но есть зависимости ошибка
  • боб BeanA не существует, такой же контекст приложения

Возможные причины:

  • файл конфигурации, в котором beanA объявлен не обрабатывается Spring (наиболее вероятного)
  • есть опечатка где-то (похоже, что нет никого, но, как вы пишете Autowire, не прекращая d ...)
  • контекст, в котором beanA объявлен ни один контекст MyController один, ни один из родителей контекст