我正在尝试将mongodb从3.x升级到4.x,因为我们需要在mongodb中有事务支持,还需要使用fongo for junit。我已经为以下给定的依赖项修改了版本:
<spring-data-mongodb-version>2.1.0.RELEASE</spring-data-mongodb-version>
<spring-data-commons-version>2.1.0.RELEASE</spring-data-commons-version>
<spring-framework-version>5.0.8.RELEASE</spring-framework-version>
<mongo-java-driver>3.2.8</mongo-java-driver>
fongo -> 2.1.0在给定的代码toTestConfig类下面添加:
private static final MongoClient createNewMongo() {
Fongo fongo = new Fongo("fongo");
MongoClient mongo = fongo.getMongo();
return mongo;
}
@Override
@Bean
public MongoTemplate mongoTemplate() throws Exception {
Fongo fongo = new Fongo("fongo");
MongoClient mongo = fongo.getMongo();
return new MongoTemplate(mongo, DATABASE_NAME);
}
@Bean
public MongoClient mongoClient() {
MongoCredential mongoCredential = MongoCredential
.createMongoCRCredential("ext-catalog", "ext-catalog",
"ext-catalog".toCharArray());
List<MongoCredential> credentialsList = new ArrayList<>();
credentialsList.add(mongoCredential);
ServerAddress serverAddress = null;
try {
serverAddress = new ServerAddress("localhost" , 27017 );
} catch (Exception e) {
e.printStackTrace();
}
return new MongoClient(serverAddress, credentialsList);
}正在获取以下给定错误:
java.lang.NoClassDefFoundError: com/mongodb/FongoMongoDatabase
at com.mongodb.MockMongoClient.getDatabase(MockMongoClient.java:88) ~[fongo-2.1.0.jar:na]
at org.springframework.data.mongodb.core.SimpleMongoDbFactory.doGetMongoDatabase(SimpleMongoDbFactory.java:105) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.core.MongoDbFactorySupport.getDb(MongoDbFactorySupport.java:107) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.core.MongoDbFactorySupport.getDb(MongoDbFactorySupport.java:95) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.MongoDatabaseUtils.doGetMongoDatabase(MongoDatabaseUtils.java:108) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.MongoDatabaseUtils.getDatabase(MongoDatabaseUtils.java:68) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.core.MongoTemplate.doGetDatabase(MongoTemplate.java:2235) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:534) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.core.DefaultIndexOperations.execute(DefaultIndexOperations.java:218) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.core.DefaultIndexOperations.ensureIndex(DefaultIndexOperations.java:121) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.createIndex(MongoPersistentEntityIndexCreator.java:145) ~[spring-data-mongodb-2.1.0.RELEASE.jar:2.1.0.RELEASE]有没有办法解决这个问题?我找到一个链接,上面写着这两个不兼容。
发布于 2019-02-04 22:42:49
我认为目前最好的解决方案是改用mongo java服务器。
这就是我如何让测试与最新版本一起工作。
发布于 2019-03-05 14:59:09
我有一个在JDK 11和Spring2.1中运行的应用程序,它还使用Fongo模拟Mongo响应。
我的应用程序在下面的包组合下工作正常
使用com.github.fakemongo:fongo 2.2.0-RC1 (使用2.2.0-rc2时发现异常)
spring- Boot -dependencies 2.1.x ( Spring Boot 2.1带来了对Java 11的支持)
您需要覆盖Spring2.1中的一些依赖项,如下所示
中的一个依赖项
更重要的是,在pom.xml中定义上述依赖关系后,运行"clean dependency:tree“来查看您的应用程序OR模块是否获得了正确的包。
[INFO] +- org.springframework.boot:spring-boot-starter-data-mongodb:jar:2.0.8.RELEASE:compile
[INFO] | +- org.mongodb:mongodb-driver:jar:3.6.4:compile
[INFO] | | +- org.mongodb:bson:jar:3.6.4:compile
[INFO] | | \- org.mongodb:mongodb-driver-core:jar:3.6.4:compilehttps://stackoverflow.com/questions/53827392
复制相似问题