2016-04-22 76 views
0

欲以@autowire,@Configuration,@Bean,@Repository在我的Spring MVC項目時,我收到此錯誤類型沒有匹配的豆發現依賴性:Spring MVC的

無法自動裝配領域:私人com.sachin.dao.StockDaoImpl com.sachin.myapp.HomeController.stockDao;

嵌套的例外是org.springframework.beans.factory.NoSuchBeanDefinitionException:com.sachin.dao.StockDaoImpl]發現依賴性沒有類型的匹配豆:

請讓我知道我在做什麼錯誤。我是Spring MVC和依賴注入的新手。

這是我的控制器代碼。我試圖在控制器中注入StockDaoImpl。

@Controller 
public class HomeController { 

    @Autowired 
    private StockDaoImpl stockDao; 

    @RequestMapping(value = "/stockgoogle/", method = RequestMethod.GET) 
    public @ResponseBody Stock stockGoogle(Locale locale, Model model) {  
     //StockDaoImpl stockDao = new StockDaoImpl(); 
     Stock s=stockDao.listGoogle(); 
     model.addAttribute("s", s);   
     return s; 
    } 

} 

我的服務實施情況如下。我在這裏用@Repository批註與「stockDao」這是在我的控制變量名,我想注入

@Repository("stockDao") 
public class StockDaoImpl implements StockDao { 
    @Override 
    public Stock listGoogle() { 
     Stock s = null; 
     try { 
      ... //some code 
      String name = rs.getString("Name"); 
      s = new Stock(name); 
      ... 
     } catch (Exception e) { 
     } 
     return s; 
    } 
} 

而且我已經創建了一個配置類分開。我正在使用它來定義我的bean。我只是用它來指定bean,並沒有在代碼中的任何地方導入它。

@Configuration 
public class BeanConfiguration { 
    @Bean 
    public StockDaoImpl stockDao(){ 
     return new StockDaoImpl(); 
    } 
} 

我在這裏丟失了些什麼。從查看錯誤看起來,@Bean註釋對工廠不可見。除註釋@configuration類外,還必須做其他事情嗎?

我也可能以錯誤的方式使用註釋。我可能會在我使用@Autowired或@Repository時出錯。

您能否請幫助。

+0

由於它看起來像您正在使用Java配置,您是否指向您的配置類?如:@ComponentScan(basePackages =「com.sachin.applyuc」) –

回答

2

我認爲這可能是您的問題:。

「此外,我已創建單獨的配置類我使用這種方法來定義我的豆我只使用這個指定的bean,並沒有任何地方進口它在代碼中「。

某處你需要告訴Spring尋找BeanConfiguration。您可以在applicationContext.xml文件做到這一點(假設你有一個),如下所示:

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

這是假設BeanConfiguration是在com.sachin.config包。

如果您無法找到放置該位置的信息,那麼共享您的web.xml文件可能會有幫助。

相關問題