无法自动装配字段自动装配的依赖关系注入失败

时间:2014-10-04 03:35:39

标签: spring-mvc autowired

可能是问题标题似乎重复,但我收到相同的错误,无法在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
}

我以这种方式在spring配置中配置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>

更新

堆栈跟踪:

 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.*"/>

现在,当我部署我的应用程序时,我收到错误,因为无法自动装配字段“beanA”注册自动装配的依赖项失败。

有人可以帮我解决这个问题....

2 个答案:

答案 0 :(得分:1)

stacktrace说:

  • 控制器MyController被Spring正确扫描,但存在依赖性错误
  • bean BeanA不存在是相同的应用程序上下文

可能的原因:

  • 声明beanA的配置文件不由Spring处理(最有可能)
  • 某处有一个错字(看起来没有,但是当你写Autowire而没有结束d时......)
  • 声明beanA的上下文与MyController一个上下文不同,也不是父上下文

答案 1 :(得分:0)

你是对的@Serge Ballesta。春天不认识豆A。 关于Autowire它的一个错字我在原帖中更新为Autowired

所以我在BeanA上添加了@component,并以这种方式改变了上下文组件扫描

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

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

但即使我在spring config xml中提到,我仍然不会注册我的bean。

Anywayz现在我没有收到任何错误,问题就解决了。