2014-10-04 107 views
0

可能是問題標題似乎是重複的,但我得到相同的錯誤,並不能找到答案在stackoverflow。無法autowire字段注入自動裝配依賴失敗

我有一個控制器

@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 
} 

我在春天的配置以這種方式

<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> 

更新配置BeanA:

堆棧跟蹤:

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」自動裝配Autowired依賴注射失敗的錯誤。

有人可以幫我擺脫這個問題....

+0

你的代碼不能編譯,你還沒有提供異常和spring配置文件的堆棧跟蹤。 – 2014-10-04 05:59:39

+0

已更新stacktrace ...看起來它試圖將BeanA類映射到mycontroller beanA ...您可以在堆棧跟蹤中看到它說com.mycompany.beans.BeanA com.mycompany.controller.MyController.beanA – pathfinder 2014-10-07 07:00:07

+0

I可以看到Bean com.mycompany.beans.BeanA未註冊.... from stacktrace:沒有符合條件的bean [com.mycompany.beans.BeanA] – pathfinder 2014-10-07 07:14:50

回答

0

你是對的@Serge貝勒斯特。豆A不被春天識別。 關於自動裝配了一個錯字我在原崗位更新,自動裝配Autowired

上BeanA所以我加入@Component也改變上下文組件掃描這樣

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

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

但仍donnoŸ即使我提到在春季配置xml我的豆沒有註冊。

Anywayz現在我沒有得到任何錯誤,問題解決了。

1

堆棧跟蹤說:

  • 控制器MyController正確的春天掃描,但也有依賴關係的錯誤
  • BeanA不存在是相同的應用背景

可能的原因:

  • 其中beanA聲明不是由春(最有可能)
  • 有一個錯字某處處理配置文件(它看起來像沒有,但你寫Autowire沒有結束d ...)
  • 其中beanA聲明的情況下,既不相同語境MyController一個,也不是父上下文
相關問題