如何配置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使用旧版本,所以我只用新版本替换它。
答案 0 :(得分:1)
如果您希望自己配置MongoTemplate或MongoDatabase,则需要处理好几件事。
您需要禁用spring boot的Mongo Auto Configuration。您可以如下所示实现此目的。
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
您必须创建MongoTemplate或MongoDatabase bean并使用Spring应用程序上下文(使用@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替换为您想要的编解码器。