我有一个使用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)}
答案 0 :(得分:0)
您可以specify repositories package location(以及自定义实现,如果需要)。
然后,您可以just create an interface扩展一个mongo-spring-data数据存储库(我更喜欢PagingAndSortignRepository)
之后,您将可以Autowire进行回购。
别忘了检查component scan package-您的存储库和服务应该在那里。
最后一件事-检查您的服务中的Spring annotations