'Autowiring MongoClient and MongoClientSettings without explicitly specifying a Connection String

I am upgrading the MongoDB driver which requires moving away from the older MongoClientOptions to the newer MongoClientSettings.

In the older implementation, the following configuration was used within a @Configuration class with the ConnectionString inferred from the spring.data.mongodb.uri and an @Autowired MongoTemplate:

@Bean
public MongoClientOptions mongoOptions() {
        Builder clientOptionsBuilder = MongoClientOptions.builder()
                //Timeout Configurations
                if(sslIsEnabled) {                  
                    clientOptionsBuilder.sslEnabled(true) 
                    //Other SSL options
                }
        return clientOptionsBuilder.build();    
    }

And in the Newer Implementation, a ConnectionString parameter is specifically expected, and the property file spring.data.mongodb.uri is not selected automatically. As a result, I have specified the connection string using the @Value Annotation. Not doing this results in the program to infer localhost:27017 as the connection source.

@Value("${spring.data.mongodb.uri}")
String connectionString;

@Bean
public MongoClient mongoClient() {
    MongoClientSettings.Builder clientSettingsBuilder = MongoClientSettings.builder()
            .applyToSocketSettings(builder -> {
                // Timeout Configurations
            }).applyConnectionString(new ConnectionString(connectionString));
    if (sSLEnabled) {
        clientSettingsBuilder.applyToSslSettings(builder -> {
            builder.enabled(sslIsEnabled);
            //Other SSL Settings
        });
    }
    return MongoClients.create(clientSettingsBuilder.build());
}

While documentation and other StackOverflow posts mention MongoClientSettings overrides the property file entries, is there a way to retrieve/infer the MongoClientSettings from the property files and then append other custom configurations to it?

I am using Spring Boot 2.6 and spring starter dependency for MongoDB

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source