[英]Error creating bean with name 'mongoTemplate' defined in class path resource Mongobee
[英]Error creating mongobee bean on springboot app (on run of tests)
我使用所有最新版本(修复其他问题)
蒙古0.13
fongo 2.2.0-RC3-SNAPSHOT
mongodb驱动程序3.8.2
当我运行我的应用程序时,出现以下错误:
org.springframework.beans.factory.BeanCreationException:在类路径资源[com / myproject / company / configuration / MongoConfiguration.class]中创建名称为'mongobeeStandalone'的bean时出错:调用init方法失败; 嵌套异常为java.lang.AbstractMethodError:com.mongodb.client.internal.FongoOperationExecutor.execute(Lcom / mongodb / operation / ReadOperation; Lcom / mongodb / ReadPreference; Lcom / mongodb / ReadConcern;)Ljava / lang / Object; ...由...引起:java.lang.AbstractMethodError:com.mongodb.client.internal.FongoOperationExecutor.execute(Lcom / mongodb / operation / ReadOperation; Lcom / mongodb / ReadPreference; Lcom / mongodb / ReadConcern;)Ljava / lang / Object ;
我的课:
@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);
}
编辑
我的测试配置:
@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());
}
}
您应该使用Spring Data Mongo,它将创建并注入com.mongodb.MongoClient
bean。 因此,删除mongoClient()
方法并添加Mongodb Spring Data依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
Spring Boot还提供了MongoTemplate
bean并对其进行自动配置。 为了进行测试,您应该使用带有@DataMongoTest批注的Embedded Mongo ,因为它配置了MongoTemplate
。 有关测试示例,请参见此处 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.