Piszę aplikację przy użyciu polecenia spring-boot-starter-jdbc (v1.3.0).Jak zarejestrować niestandardowe konwertery w rozruchu wiosennym?
Problem, który spotkałem: Wystąpienie BeanPropertyRowMapper
kończy się niepowodzeniem, ponieważ nie można go przekonwertować z java.sql.Timestamp
na java.time.LocalDateTime
.
Aby skopiować ten problem, zaimplementowałem org.springframework.core.convert.converter.Converter
dla tych typów.
public class TimeStampToLocalDateTimeConverter implements Converter<Timestamp, LocalDateTime> {
@Override
public LocalDateTime convert(Timestamp s) {
return s.toLocalDateTime();
}
}
Moje pytanie brzmi: Jak mogę udostępnić TimeStampToLocalDateTimeConverter
dla BeanPropertyRowMapper
.
Bardziej ogólne pytanie, w jaki sposób mogę zarejestrować moje konwertery, aby udostępnić je w całym systemie?
Poniższy kod przynieść nam NullPointerException
na etapie inicjalizacji:
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();
}
Dziękuję.
Po prostu dodaj konwerter jako ziarno ... Usuń wszystko inne. –
Mylące 'HttpMessageConverter' i' Converter' tutaj. Wystarczy dodać klasę, która rozszerza 'WebMVcConfigurerAdapter' i implementuje metodę' addFormatters'. Na 'FormatterRegistry' wywołaj' addConverter' dla tych, które chcesz dodać. –
Nie mam środowiska internetowego. –