Framework использует LUUID для хранения java.util.UUID, но мы хотим сохранить его в стандартном формате UUID в mongodb. Этого можно достичь, если мы настроим BsonUUIDCodec с типом Standard.
Мы уже пытались настроить кодек с помощью конфигурации с bean-компонентом ReactiveMongoDatabaseFactory. Это работает, но неудобно, мы также должны предоставить базу данных, URI и т. Д.
Наша реализация:
@Bean
fun mongoFactory(
environment: ConfigurableEnvironment
): ReactiveMongoDatabaseFactory {
val builder = MongoClientSettings.builder()
val codecRegistry =
fromRegistries(fromCodecs(UuidCodec(UuidRepresentation.STANDARD)), getDefaultCodecRegistry())
builder.codecRegistry(codecRegistry)
val database = requireNotNull(environment.getProperty(DATABASE_PROPERTY)) { "Database must be specified" }
val uri = requireNotNull(environment.getProperty(URI_PROPERTY)) { "URI must be specified" }
val connectionString = if (!uri.contains(database)) {
"$uri/$database"
} else {
uri
}
builder.applyConnectionString(ConnectionString(connectionString))
val mongoClient = MongoClients.create(builder.build())
return SimpleReactiveMongoDatabaseFactory(mongoClient, database)
}
Мы хотим предоставить кодек без переопределения дополнительных настроек, таких как URI и база данных иПользовательская настройка других параметров. Есть ли более простой способ настроить кодек?