Spring Data MongoDB配置数据库bean

问题描述 投票:0回答:1

如何配置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使用的是旧版本,所以我只用新版本替换它。

spring spring-boot spring-data-mongodb
1个回答
1
投票

如果您希望自己配置MongoTemplate或MongoDatabase,则需要处理好几件事。

  1. 您需要禁用spring boot的Mongo Auto Configuration。您可以如下所示实现此目的。 @SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
  2. 您必须创建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替换为您想要的编解码器。

© www.soinside.com 2019 - 2024. All rights reserved.