복붙노트

[SPRING] mongo 사용자 정의 변환기를 사용하지 않는 Spring

SPRING

mongo 사용자 정의 변환기를 사용하지 않는 Spring

기본 ID 값을 변경하기 위해 사용자 지정 변환기를 직접 작성하려고했습니다. 그러나 결코 실제로 부르지 않습니다. 여기 내 사용자 지정 변환기가 있습니다.

public class EventKeyConverter implements Converter<Event,DBObject> {

    @Override
    public DBObject convert(Event object) {
        DBObject dbObject = DBObjectTransformer.toDBObject(object);
        dbObject.put("_id", KeyGenerator.getRandomKey());
        return dbObject;
    }

}

여기에 내가 등록한 고객 변환 담당자가있다.

@Override
@Bean
public CustomConversions customConversions() {
    List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
    converters.add(new EventKeyConverter());
    return new CustomConversions(converters);
}

@Override
@Bean
public MappingMongoConverter mappingMongoConverter() throws Exception {
    MappingMongoConverter converter = new MappingMongoConverter(
            eventsMongoDbFactory(), mongoMappingContext());
    converter.setCustomConversions(customConversions());
    return converter;
}

@Bean
public MongoTemplate eventsMongoTemplate() throws Exception {
    final MongoTemplate template = new MongoTemplate(
            eventsMongoDbFactory(), mappingMongoConverter());
    template.setWriteResultChecking(WriteResultChecking.EXCEPTION);

    return template;
}

일부 개체를 저장할 때이 변환기는 절대로 호출되지 않습니다.

편집 1 : 모든 저장소에서 기본 개체 ID를 일부 사용자 지정 ID (UUID + 임의 키)로 변경해야합니다. 그래서 몽고 변환기를 사용하려고했습니다.

편집 2 : 방금 문제를 발견했습니다. CustomConversion ()을 포함하는 클래스에서 @Configuration을 @Component로 변경하면 올바르게 작동합니다. 그러나 아직도 여기서 무슨 일이 일어 났는지 궁금합니다.

해결법

  1. ==============================

    1.@Configuration은 @Bean으로 주석을 달았을 때 새로운 빈을 반환하고 그것을 문맥에 넣는 메소드를 포함하고있는 Spring 컨텍스트 조각을 정의한다.

    @Configuration은 @Bean으로 주석을 달았을 때 새로운 빈을 반환하고 그것을 문맥에 넣는 메소드를 포함하고있는 Spring 컨텍스트 조각을 정의한다.

    @Component는 "이 Pojo는 Spring bean입니다"라고 말하는 방법입니다. 그런 다음 @Component 주석이 달린 빈에 대한 패키지를 스캔하려면 @ComponentScan 주석 또는 XML 해당 제품이 필요합니다.

    따라서 귀하의 경우에는 변환기를 잘 만들었지 만, @Component를 추가 할 때까지 Spring 빈으로 등록되지 않았으므로 처음에는 작동하지 않았습니다.

  2. from https://stackoverflow.com/questions/14930933/spring-not-using-mongo-custom-converters by cc-by-sa and MIT license