用于存储库接口的Spring Data MongoDb bean XML配置

时间:2018-12-18 03:57:57

标签: java spring spring-data-mongodb

我有一个使用xml配置的现有spring应用程序。 现在,我将使用spring-data-mongodb将其连接到Mongo数据库。 我的repository/dao都是类似以下的接口:

public interface CustomerDao extends MongoRepository<Customer, String> {
   ...
}

在我的服务类CustomerService中,它自动装配了CustomerDao接口。

<bean id="customerDao" class="com.myapp.repository.CustomerDao" />
<bean id="customerService" class="com.myapp.service.CustomerService">
    <property name="customerDao" ref="customerDao"/>
</bean>

但是由于CustomerDao是一个接口,所以我总是收到错误消息:

org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.myapp.repository.CustomerDao]: Specified class is an interface

基于spring-data-mongodb存储库的教程,大部分是扩展到MongoRepository的接口。

我的问题是,如果我不会在CustomerDao配置中创建bean条目,则在CustomerService类内自动xml接线时会出错。以下是我遇到的错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.myapp.repository.CustomerDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=customerDao)}

1 个答案:

答案 0 :(得分:0)

您可以specify repositories package location(以及自定义实现,如果需要)。

然后,您可以just create an interface扩展一个mongo-spring-data数据存储库(我更喜欢PagingAndSortignRepository)

之后,您将可以Autowire进行回购。

别忘了检查component scan package-您的存储库和服务应该在那里。

最后一件事-检查您的服务中的Spring annotations