2014-11-04 76 views
3

我有一個名爲com.example.service的包,而在我的Spring配置類中,我有註釋@ComponentScan({"com.example.service"},{"com.example.controller"})Spring @ComponentScan for @Service

當我嘗試使用@Autowire服務時,代碼編譯失敗,出現NoSuchBeanDefinitionException。我的服務界面注有@Service

目前我使用一個相當難看的解決辦法,在我的ExampleConfig.java像

@Bean 
public MyService myService() { 
    return new MyServiceImpl(); 
} 

申報的每一個服務豆一般的@ComponentScan似乎工作,如果我刪除控制器封裝,都沒有找到控制器。我理解錯了什麼?請讓我知道,如果我錯過了任何相關信息。

+1

編譯時不會發生異常。保持錯誤類型分開,否則你會在錯誤的地方尋找解決方案。 – chrylis 2014-11-04 08:58:02

+0

你對此絕對正確。在這一點上,我的描述與我的描述不精確。 – dexBerlin 2014-11-04 09:29:08

回答

3

的爲MyService接口與@Service

註釋您必須註釋你的接口的實現。不是界面本身。

0

嘗試使用以下代碼ComponentScan註釋用於掃描多個軟件包:

@ComponentScan({"com.example.service","com.example.controller"}) 

代替

@ComponentScan({"com.example.service"},{"com.example.controller"}) 

@ComponentScan使用字符串數組,用於掃描多個基本包。

+0

我很抱歉,但我想你沒有正確地閱讀這個問題。這正是我正在做的。但延斯確實提供了正確的答案。 – dexBerlin 2014-11-04 08:26:41

相關問題