Skip to content

Instantly share code, notes, and snippets.

@s-kocher
Last active February 3, 2022 10:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save s-kocher/13ea56347e44cc3d56c5543fde090e74 to your computer and use it in GitHub Desktop.
Save s-kocher/13ea56347e44cc3d56c5543fde090e74 to your computer and use it in GitHub Desktop.
Spring MongoConfig with client config + Custom converters
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.mongo.MongoClientSettingsBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
@Configuration(proxyBeanMethods = false)
class MongoConfig {
@Bean
MongoClientSettingsBuilderCustomizer mongoClientSettingsBuilderCustomizer() {
return clientSettingsBuilder -> clientSettingsBuilder
.applyToClusterSettings(builder -> builder
.serverSelectionTimeout(5000, TimeUnit.MILLISECONDS)
)
.applyToSocketSettings(builder -> builder
.readTimeout(5000, TimeUnit.MILLISECONDS)
.connectTimeout(2000, TimeUnit.MILLISECONDS)
);
}
@Bean
BeanPostProcessor mappingMongoConverterBeanPostProcessor() {
return new BeanPostProcessor() {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof MappingMongoConverter mongoMapping) {
mongoMapping.setCustomConversions(
new MongoCustomConversions(
List.of(
new ZonedDateTimeReadConverter(),
new ZonedDateTimeWriteConverter()
)
)
);
mongoMapping.afterPropertiesSet();
}
return bean;
}
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment