Spring framework/Spring boot
[Springboot] Mongotemplate 에서 _class 제거
마샤와 곰
2023. 4. 25. 15:49
자바 기반의 몽고템플릿 라이브러리를 사용하면 데이터를 저장하거나 수정 할 때 "_class" 필드 항목이 저장하는 클래스 패키지명과 함께 항상 생기고는 합니다.
아래 사진처럼 패키지명과 클래스 이름이 그대로 저장되어 깨림찍 하지 않을 수 없습니다.
몽고템플릿에서는 데이터를 매핑 할 때 주어진 클래스<T> 의 패키지와 이름을 넣도록 기본설정이 되어 있습니다.
해당 기능을 끄기 위해서는 application.properties 에서는 할 수 없으며, 따로 빈 객체를 생성해야 합니다.
위 내용에 해당되는 코드 입니다.
* 몽고컨피그.class
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
@Configuration
public class 몽고건피그 {
@Bean
public MappingMongoConverter 컨버팅설정(MongoDatabaseFactory factory, MongoMappingContext ctx,
BeanFactory beanFactory) {
DbRefResolver resolver = new DefaultDbRefResolver(factory);
MappingMongoConverter converter = new MappingMongoConverter(resolver, ctx);
converter.setTypeMapper(new DefaultMongoTypeMapper(null)); //요기!
return converter;
}
}
딱히 어렵지 않는 코드 입니다.
타입매퍼값을 새로이 디폴트 형식에 null 값을 할당하면 _class 필드 값을 더 이상 저장되지 않습니다.
간단하게 알아본 Mongotemplate 에서 _class 제거 방법 이였습니다.
궁금한점 또는 틀린부분은 언제든 연락 주세요! 😊
반응형