55import org .bson .Document ;
66import org .slf4j .Logger ;
77import org .slf4j .LoggerFactory ;
8- import org .springframework .beans .factory .InitializingBean ;
98import org .springframework .beans .factory .annotation .Autowired ;
109import org .springframework .context .annotation .Bean ;
1110import org .springframework .context .annotation .Configuration ;
12- import org .springframework .context .annotation .Lazy ;
1311import org .springframework .data .mongodb .MongoDatabaseFactory ;
1412import org .springframework .data .mongodb .MongoTransactionManager ;
15- import org .springframework .data .mongodb .core .convert .DefaultMongoTypeMapper ;
16- import org .springframework .data .mongodb .core .convert .MappingMongoConverter ;
13+ import org .springframework .data .mongodb .core .convert .MongoCustomConversions ;
1714import org .springframework .transaction .annotation .EnableTransactionManagement ;
1815
1916@ Configuration
2017@ EnableTransactionManagement (proxyTargetClass = true )
21- public class MongoConfig implements InitializingBean {
18+ public class MongoConfig {
2219 private static final Logger LOG = LoggerFactory .getLogger (MongoConfig .class );
23- final MongoDatabaseFactory mongoDatabaseFactory ;
24- @ Lazy
25- private final MappingMongoConverter mappingMongoConverter ;
20+
21+ private final MongoDatabaseFactory mongoDatabaseFactory ;
2622
2723 @ Autowired
28- public MongoConfig (
29- MongoDatabaseFactory mongoDatabaseFactory , MappingMongoConverter mappingMongoConverter ) {
24+ public MongoConfig (MongoDatabaseFactory mongoDatabaseFactory ) {
3025 this .mongoDatabaseFactory = mongoDatabaseFactory ;
31- this .mappingMongoConverter = mappingMongoConverter ;
26+ }
27+
28+ @ Bean
29+ public MongoCustomConversions customConversions () {
30+ return MongoCustomConversions .create (adapter ->
31+ adapter .useNativeDriverJavaTimeCodecs ()
32+ );
3233 }
3334
3435 /**
@@ -37,25 +38,13 @@ public MongoConfig(
3738 @ Bean
3839 public MongoTransactionManager transactionManager () {
3940 LOG .info ("MongoDB Native Transactions Enabled" );
40-
4141 return new MongoTransactionManager (mongoDatabaseFactory );
4242 }
4343
4444 @ Bean
4545 public MongoVersionBean mongoVersionBean (MongoClient mongoClient ) {
46- // TODO - Detect if Atlas Search available
4746 Document buildInfo = mongoClient .getDatabase ("admin" ).runCommand (new Document ("buildInfo" , 1 ));
48-
4947 String version = buildInfo .getString ("version" );
50-
5148 return new MongoVersionBean (version );
5249 }
53-
54- @ Override
55- public void afterPropertiesSet () {
56- // We are disabling the _class field here as it has a significant impact on query performance
57- // When it gets included in queries but is not in the index. You only need it when you have
58- // polymorphism for a collection.
59- mappingMongoConverter .setTypeMapper (new DefaultMongoTypeMapper (null ));
60- }
6150}
0 commit comments