我有Java webapp,它连接到MongoDB,并利用自定义编解码器将域特定的Java POJO编码/解码到MongoDB文档。连接URL通过环境变量提供给应用程序。该URL可以包含选项,但是根据URL格式文档https://docs.mongodb.com/manual/reference/connection-string/,无法在URL中指定编解码器。 所以我的自然选择是使用MongoClientOptions构建器将URI和新CodecRegistry中的选项与我的编解码器结合起来:
MongoClientOptions optsWithCodecs = MongoClientOptions.builder(
mongoURI.getOptions()).codecRegistry(myCodecRegistry).build();
问题是MongoClient不提供接受URI和MongoClientOptions的构造函数,那里的构造函数只接受URI:
public MongoClient(final MongoClientURI uri) {
super(uri);
}
这使得我手动解析URI从MongoClient私有方法复制一些代码,然后使用其他构造函数接受选项。 我想找到一个更好的方法来配置MongoClient与自定义编解码器。 我使用的是Mongo Java驱动程序版本3.3.0
答案 0 :(得分:1)
你可以尝试这样的事情。
MongoClientOptions optsWithCodecs = MongoClientOptions.builder(
mongoURI.getOptions()).codecRegistry(myCodecRegistry).build();
MongoClientURI mongoClientUri = new MongoClientURI(uri, optsWithCodecs);
MongoClient mongoClient = new MongoClient(mongoClientUri);
答案 1 :(得分:1)
Builder optionsBuilder = MongoClientOptions.builder().codecRegistry(myCodecRegistry);
MongoClient mongo = new MongoClient(new MongoClientURI(connectionString, optionsBuilder));