Scrivo applicazione utilizzando spring-boot-starter-jdbc (v1.3.0).Come registrare convertitori personalizzati in avvio di primavera?
Il problema che ho incontrato: l'istanza di BeanPropertyRowMapper
non riesce poiché non può convertire da java.sql.Timestamp
a java.time.LocalDateTime
.
Per copiare questo problema, ho implementato org.springframework.core.convert.converter.Converter
per questi tipi.
public class TimeStampToLocalDateTimeConverter implements Converter<Timestamp, LocalDateTime> {
@Override
public LocalDateTime convert(Timestamp s) {
return s.toLocalDateTime();
}
}
La mia domanda è: Come faccio a disposizione TimeStampToLocalDateTimeConverter
per BeanPropertyRowMapper
.
Domanda più generale, come registrare i convertitori per renderli disponibili a livello di sistema?
Il seguente codice portarci a NullPointerException
sul palco di inizializzazione:
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();
}
Grazie.
Basta aggiungere il convertitore come bean ... Rimuovere tutto il resto. –
Confondere 'HttpMessageConverter' e' Converter' qui. Basta aggiungere una classe che estende 'WebMVcConfigurerAdapter' e implementare il metodo' addFormatters'. Sulla 'FormatterRegistry' chiama' addConverter' per quelli che vuoi aggiungere. –
Non ho affatto un ambiente web. –