Set MongoDb converter programmatically

后端 未结 6 1685
無奈伤痛
無奈伤痛 2020-12-01 08:20

I\'m trying to use a custom converter with spring-data-mongodb. I want to create it programmatically, but I get the following error:

org.springframework.core         


        
6条回答
  •  悲哀的现实
    2020-12-01 08:47

    Just a heads up. I was struggling with that problem on spring-data-mongodb 1.5.1.RELEASEusing Java Configuration. As some classes have changed, I'm posting my solution.

    Add the following definition in your configuration class annotated with @Configuration:

    @Bean
    public Mongo mongo() throws Exception {
        MongoPropertiesResolver resolver = mongoResolver();
        return new MongoClient(resolver.getUrl());
    }
    
    @Bean
    public MongoDbFactory mongoDbFactory() throws Exception {
        return new SimpleMongoDbFactory(mongo(), "database");
    }
    
    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory(), mongoConverter());
    }
    
    @Bean
    public CustomConversions customConversions() {
        List> converters = new ArrayList>();
        converters.add(new TimeZoneReadConverter());
        converters.add(new TimeZoneReadConverter());
        return new CustomConversions(converters);
    }
    
    @Bean
    public MappingMongoConverter mongoConverter() throws Exception {
        MongoMappingContext mappingContext = new MongoMappingContext();
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory());
        MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mappingContext);
        mongoConverter.setCustomConversions(customConversions());
        return mongoConverter;
    }
    

提交回复
热议问题