Untitled
unknown
plain_text
5 months ago
1.9 kB
7
Indexable
@Configuration class MongoConfig( @Value("\${spring.data.mongodb.host:localhost}") private val host: String, @Value("\${spring.data.mongodb.database:}") private val database: String, @Value("\${spring.data.mongodb.port:}") private val port: Int, @Value("\${spring.data.mongodb.username:}") private val userName: String, @Value("\${spring.data.mongodb.password:}") private val password: String ) { private val log = logger() @Autowired private lateinit var env: Environment @Bean fun mongoClientSettings() = MongoClientSettings.builder().build() @Bean @Primary @Profile(Profiles.DEV, Profiles.STG, Profiles.PRD) fun mongoClientSettingsWithSSL(): MongoClientSettings { log.info("set ssl for database connection") return MongoClientSettings.builder() .credential( MongoCredential.createCredential( userName, database, encodeUrl(password).toCharArray() ) ) .retryWrites(false) .applyToSslSettings { builder: SslSettings.Builder -> builder.enabled(true) } .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress(host, port))) } .build() } private fun encodeUrl(statement: String): String { var password = statement password = password.trim { it <= ' ' } if (password.contains("@") || password.contains(":")) { return URLEncoder.encode(password, StandardCharsets.ISO_8859_1) } return password } @Bean fun mongoPropertiesCustomizer(properties: MongoProperties): MongoPropertiesClientSettingsBuilderCustomizer { return MongoPropertiesClientSettingsBuilderCustomizer(properties, env) } }
Editor is loading...
Leave a Comment