首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在springboot应用程序上创建mongobee错误(在运行测试时)

在springboot应用程序上创建mongobee错误(在运行测试时)
EN

Stack Overflow用户
提问于 2018-10-18 08:33:24
回答 1查看 1.9K关注 0票数 0

我使用所有持久版本(修复其他问题)

蒙古蜜蜂0.13 fongo 2.2.0-RC3-快照 mongodb-驱动程序3.8.2

当我运行我的应用程序时,我有以下错误:

org.springframework.beans.factory.BeanCreationException:错误创建名为“mongobeeStandalone”的bean类路径资源init方法的com/myproject/company/configuration/MongoConfiguration.class:调用失败;嵌套异常是java.lang.AbstractMethodError: com.mongodb.client.internal.FongoOperationExecutor.execute(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;.原因: com.mongodb.client.internal.FongoOperationExecutor.execute(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;:java.lang.AbstractMethodError

我的班级:

代码语言:javascript
复制
@Bean
public Mongobee mongobeeStandalone(final MongoTemplate mongoTemplate, final MongoClient mongoClient) {
    final Mongobee runner = new Mongobee(mongoClient);
    runner.setChangeLogsScanPackage(Changelog1.class.getPackage().getName()); // package to scan for changesets
    runner.setDbName(mongoTemplate.getDb().getName());
    return runner;
}

@Bean
public MongoClient mongoClient(final MongoDbFactory mongoDbFactory) {
    final Mongo mongo = mongoDbFactory.getLegacyDb().getMongo();
    if (!MongoClient.class.isInstance(mongo)) {
        throw new UnsupportedOperationException("Must be a MongoClient");
    }
    return MongoClient.class.cast(mongo);
}

编辑

我的测试配置:

代码语言:javascript
复制
@Configuration
public class FoncgoConfiguration extends AbstractMongoConfiguration {

    @Bean
    public Fongo fongo() {
        return new Fongo("mongo-test");
    }

    @Override
    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        final SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(mongoClient(), getDatabaseName());
        final MongoTemplate mongoTemplate = new MongoTemplate(simpleMongoDbFactory, mappingMongoConverter());
        return mongoTemplate;
    }

    @Override
    @Bean
    public MongoClient mongoClient() {
        return MockMongoClient.create(fongo());
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-18 09:47:33

您应该使用Spring,它将创建并注入com.mongodb.MongoClient bean。因此,删除mongoClient()方法并添加Mongodb数据依赖项:

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

Spring还提供了一个MongoTemplate bean并自动配置它。为了进行测试,您应该使用嵌入式Mongo@DataMongoTest注释,因为它配置了一个MongoTemplate。有关测试示例,请参见这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52870016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档