SpringBoot配置MongoDB去掉_class字段

来源:互联网 发布:淘宝美工网上兼职接单 编辑:程序博客网 时间:2024/06/06 10:45

When using spring data mongo it by default adds a _class key to your collection to be able to handle inheritance.
But if your domain model is simple and flat, you can remove it by overriding the default MappingMongoConverter

import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.mongodb.MongoDbFactory;import org.springframework.data.mongodb.core.convert.*;import org.springframework.data.mongodb.core.mapping.MongoMappingContext;/** * @description: * When using spring data mongo it by default adds a _class key to your collection to be able to handle inheritance. * But if your domain model is simple and flat, you can remove it by overriding the default MappingMongoConverter * @author:@luomouren. * @Date:2017-12-03 21:26 */@Configurationpublic class MongoConfig {    @Bean    public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context, BeanFactory beanFactory) {        DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);        MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);        try {            mappingConverter.setCustomConversions(beanFactory.getBean(CustomConversions.class));        } catch (NoSuchBeanDefinitionException ignore) {        }        // Don't save _class to mongo        mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));        return mappingConverter;    }}
原创粉丝点击