spring data mongodb自定义接口(interface)ConflictingBeanDefinitionException

标签 spring spring-data spring-data-mongodb

已关注 Spring Data MongoDB手册中,我创建了存储库和实现类。但是,当我启动我的应用程序时,spring bootstrap 失败并显示

Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException:
Annotation-specified bean name 'mockTestRepositoryImpl' for bean class [com.foo.testapp.mongo.repository.impl.MockTestRepositoryImpl] conflicts with existing, non-compatible bean definition of same name and class [com.foo.testapp.mongo.repository.impl.MockTestRepositoryImpl]

My config and code: (groovy)

package com.foo.testapp.mongo.repository.impl

@Component
class MockTestRepositoryImpl implements MockTestRepositoryCustom {
    MongoOperations mongoOperations   
    @Autowired
    MockTestRepositoryImpl(MongoOperations mongoOperations) {
        this.mongoOperations = mongoOperations
    }   
    @Override
    MockTest findAndModify(Query query, Update update, FindAndModifyOptions options) {
        return mongoOperations.findAndModify(query, update, options, MockTest)
    }   
    @Override
    boolean exists(Query query) {
        return mongoOperations.exists(query, MockTest)
    }
}

自定义界面:

package com.foo.testapp.mongo.repository
public interface MockTestRepositoryCustom {
    MockTest findAndModify(Query query, Update update, FindAndModifyOptions options)
    boolean exists(Query query);
}

Spring 数据存储库:

package com.foo.testapp.mongo.repository
public interface MockTestRepository extends MongoRepository<MockTest, String>, MockTestRepositoryCustom {
List<MockTest> findByDeleted(boolean deleted);
    MockTest findByIdAndDeleted(String id, boolean deleted);
    @Query(value = "{ 'deleted' : ?0 }", fields = "{ 'name' : 1 }")
    List<MockTest> findAllBasicInfo(boolean deleted);
}

最佳答案

问题是您用 @Component 注解了 MockTestRepositoryImpl

您需要完全删除@Component(正如您在手册中看到的那样,没有这样的注释 - 但所有 Spring 功能都可以正常工作)。

关于spring data mongodb自定义接口(interface)ConflictingBeanDefinitionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204939/

相关文章:

mongodb - 如何让 Spring-Data-MongoDB 验证我的对象?

java - Spring Data MongoDB 中 @MongoId 相对于 @Id 有什么用?

spring-data-mongodb - Spring Data MongoDB-Criteria API OrOperator无法正常工作

java - hibernate.jdbc.fetch_size 和 hibernate.jdbc.batch_size 有什么区别?

Spring3 @ExceptionHandler 用于 ServletRequestBindingException

hibernate - SmartGWT、Spring、Hibernate 和 Gilead

java - REST POST 服务使用 AbstractRoutingDataSource 持久保存到两个不同的数据源中

java - 使用 Spring Cloud Streams 测试错误流

java - Spring Data Projection 加载附加字段

java - CrudRepository 保存方法不会在数据库中保存任何内容