2015-03-19 132 views
2

我試圖自動裝配接口控制器豆不能@Autowired接口

裏面在我的上下文配置文件,我已經把

<context:annotation-config /> 

<bean id="viewVerbale" class="com.sirfe.controller.VerbaliController" /> 

我控制器類是

@Controller 
public class VerbaliController { 


    @Autowired 
    VerbaliRepository repository; 

    private static final Logger logger = LoggerFactory.getLogger(VerbaliController.class); 


    @RequestMapping(value = "/sirfe/verbale/{sequVerbale:.+}", method = RequestMethod.GET) 
    public ModelAndView viewVerbale(@PathVariable("sequVerbale") String sequVerbale) { 

     logger.debug("welcome() - sequVerbale {}", sequVerbale); 

     Verbali verbale = repository.findOne(Long.parseLong(sequVerbale)); 


     ModelAndView model = new ModelAndView(); 
     model.setViewName("sirfe/verbali/viewVerbale"); 
     model.addObject("sequVerbale", sequVerbale); 

     return model; 

    } 

} 

我的接口簽名是

public interface VerbaliRepository extends CrudRepository<Verbali, Long> { } 

,當我啓動我的應用程序,我得到

Could not autowire field: com.sirfe.repository.VerbaliRepository com.sirfe.controller.VerbaliController.repository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.sirfe.repository.VerbaliRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. 
+1

您在哪裏註冊了存儲庫? – 2015-03-19 10:57:02

+1

任何地方,我想知道我在哪裏註冊 – Noomak 2015-03-19 11:14:32

回答

0

春天抱怨它不能找到匹配的有效bean定義,即有沒有豆定義是執行VerbaliRepository

你需要定義一個bean或可替代標註的實現類@Component

<bean id="myRepository" class="com.foo.bar.MyRepository" /> 

@Component 
public class MyRepository implements VerbaliRepository { 
.... 
} 
+0

我已經嘗試過第一個解決方案,並且我得到這個錯誤'在ServletContext資源中定義名稱爲'myRepository'的bean創建錯誤 - 指定的類是一個接口' – Noomak 2015-03-19 11:12:08

2

貌似你試圖使用Spring JPA存儲庫。

爲了讓Spring爲您的存儲庫接口豆,你在applicationContext.xml中需要聲明要掃描包

<jpa:repositories base-package="com.sirfe.repository" /> 

這樣做,Spring將產生的bean實現你的接口。

請參閱Spring JPA Repositories

+0

我已經按照你的建議做了,但我得到這個錯誤:'錯誤創建與名稱的bean'(內部bean)#59ab51b0':設置構造函數參數時無法解析對bean'entityManagerFactory'的引用;嵌套異常是org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有定義名爲'entityManagerFactory'的bean' – Noomak 2015-03-19 11:36:21

+0

你沒有設置你的spring項目,你需要定義多個bean,比如entiyManagerFactory,我建議你需要閱讀並遵循http://docs.spring.io/spring/docs/current/spring-framework-reference/html/orm.html – Vyncent 2015-03-19 11:40:52