Как я могу легко настроить кодек? - PullRequest
0 голосов
/ 01 октября 2019

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 и база данных иПользовательская настройка других параметров. Есть ли более простой способ настроить кодек?

...