如何配置Mongo数据库bean? MongoDB驱动程序以某种方式预配置初始化bean。我无法使用mongoClient.getDatabase()
获取bean,因为数据库名称来自连接uri或仅来自标准属性。我无法定义一个新的bean来更新旧的这个public MongoDatabase mongoDatabase(MongoDatabase database)
,因为这会导致禁止定义循环循环。我该怎么办?
与问题不完全相关,但这是我的意图:
我想要做的是添加MongoDB驱动程序版本3.6中引入的自定义约定。
http://mongodb.github.io/mongo-java-driver/3.6/bson/pojos/
我知道spring数据mongodb使用的是旧版本,所以我只用新版本替换它。
如果您希望自己配置MongoTemplate或MongoDatabase,则需要处理好几件事。
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@Bean
)注册它。
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
ServerAddress server = new ServerAddress(host,port);
MongoClientOptions.Builder builder = MongoClientOptions.builder();
CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(new XYZCodec(..)),
MongoClient.getDefaultCodecRegistry());
builder.codecRegistry(codecRegistry).build();
MongoClientOptions options = builder.build();
MongoClient mongoClient = new MongoClient(server,options);
return new SimpleMongoDbFactory(mongoClient, mongoDataBase);
}
将XYZCodec替换为您想要的编解码器。