복붙노트

[SPRING] 봄 부팅시 사용자 정의 변환기를 등록하는 방법은 무엇입니까?

SPRING

봄 부팅시 사용자 정의 변환기를 등록하는 방법은 무엇입니까?

나는 spring-boot-startter-jdbc (v1.3.0)을 사용하여 응용 프로그램을 작성했습니다.

내가 만난 문제 : BeanPropertyRowMapper의 인스턴스가 java.sql.Timestamp에서 java.time.LocalDateTime으로 변환 할 수 없기 때문에 실패합니다.

이 문제를 복사하기 위해 이러한 유형의 org.springframework.core.convert.converter.Converter.

public class TimeStampToLocalDateTimeConverter implements Converter<Timestamp, LocalDateTime> {

    @Override
    public LocalDateTime convert(Timestamp s) {
        return s.toLocalDateTime();
    }
}

내 질문은 : 어떻게 BeanPropertyRowMapper에 사용할 수있는 TimeStampToLocalDateTimeConverter를 만들 수 있습니까?

보다 일반적인 질문은 변환기를 시스템 전반에 사용할 수 있도록 등록하는 방법입니다.

다음 코드는 초기화 단계에서 NullPointerException을 발생시킵니다.

private Set<Converter> getConverters() {
    Set<Converter> converters = new HashSet<Converter>();
    converters.add(new TimeStampToLocalDateTimeConverter());
    converters.add(new LocalDateTimeToTimestampConverter());

    return converters;
}

@Bean(name="conversionService")
public ConversionService getConversionService() {
    ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
    bean.setConverters(getConverters()); 
    bean.afterPropertiesSet();
    return bean.getObject();
}    

고맙습니다.

해결법

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

    1.@Autowired와 Spring의 관련 의존성 삽입 메커니즘을 사용하여 애플리케이션 전체에 단일 ConversionService 인스턴스를 사용하는 것이 좋습니다. ConversionService는 구성 내에서 인스턴스화됩니다.

    @Autowired와 Spring의 관련 의존성 삽입 메커니즘을 사용하여 애플리케이션 전체에 단일 ConversionService 인스턴스를 사용하는 것이 좋습니다. ConversionService는 구성 내에서 인스턴스화됩니다.

    사용 가능한 애플리케이션 전체에 대한 모든 전환은 특수 효과를 수신합니다 (예 : @AutoRegistered). 애플리케이션 시작시 @Component FormatterRegistrar를 시작합니다 (유형 이름 자체는 오해의 소지가 있습니다. 예를 들어, 등록자는 "등록자"입니다. @ 봄철에 완전히 관리되고 종속성 주입이 필요한 @Component) @AutoRegistered List 모든 주석이 달린 변환기의

    구체적인 구현 세부 사항은이 스레드를 참조하십시오. 우리는이 메커니즘을 프로젝트 내에서 사용하며 매력처럼 작동합니다.

  2. from https://stackoverflow.com/questions/34239585/how-to-register-custom-converters-in-spring-boot by cc-by-sa and MIT license