Spring数据MongoDB配置数据库bean
Spring Data MongoDB Configure Database bean
如何配置 Mongo 数据库 bean?该 bean 由 MongoDB 驱动程序以某种方式初始化,并预先配置了一些东西。我无法使用 mongoClient.getDatabase()
获取 bean,因为数据库名称来自连接 uri 或仅来自标准 属性。而且我不能像这样定义一个新 bean 来更新旧 bean public MongoDatabase mongoDatabase(MongoDatabase database)
因为这会导致禁止定义循环。我该怎么办?
与问题不完全相关,但这是我的意图:
我想做的是添加 MongoDB 驱动程序版本 3.6 中引入的自定义约定。
http://mongodb.github.io/mongo-java-driver/3.6/bson/pojos/
我知道 spring 数据 mongodb 使用的是旧版本,所以我只是将其替换为较新的版本。
如果您想自己配置Mongo模板或Mongo数据库,您需要注意几件事。
您需要禁用 spring 启动的 Mongo 自动配置。您可以如下所示实现此目的。
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
您必须创建 Mongo 模板或 Mongo 数据库 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 替换为您想要的编解码器。
如何配置 Mongo 数据库 bean?该 bean 由 MongoDB 驱动程序以某种方式初始化,并预先配置了一些东西。我无法使用 mongoClient.getDatabase()
获取 bean,因为数据库名称来自连接 uri 或仅来自标准 属性。而且我不能像这样定义一个新 bean 来更新旧 bean public MongoDatabase mongoDatabase(MongoDatabase database)
因为这会导致禁止定义循环。我该怎么办?
与问题不完全相关,但这是我的意图:
我想做的是添加 MongoDB 驱动程序版本 3.6 中引入的自定义约定。
http://mongodb.github.io/mongo-java-driver/3.6/bson/pojos/
我知道 spring 数据 mongodb 使用的是旧版本,所以我只是将其替换为较新的版本。
如果您想自己配置Mongo模板或Mongo数据库,您需要注意几件事。
您需要禁用 spring 启动的 Mongo 自动配置。您可以如下所示实现此目的。
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
您必须创建 Mongo 模板或 Mongo 数据库 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 替换为您想要的编解码器。