2015-04-11 10 views
5

Nel contesto applicativo Ho registrato un modulo ObjectMapper:Spring avvio ignorare ObjectMapper modulo

@Bean 
public SimpleModule jsr310Module() { 
    final SimpleModule module = new SimpleModule(); 
    module.addSerializer(new LocalDateSerializer()); 
    module.addDeserializer(LocalDate.class, new LocalDateDeserializer()); 
    return module; 
} 

ho cercato di debug e viene caricato (o almeno il metodo public void setupModule(SetupContext context) è eseguito all'avvio) ma quando chiamo un'API di riposo che restituisce un oggetto con un LocalDate, il mio deserializzatore è ignorato.

Qualche suggerimento per risolvere il problema?

+0

Come è stato registrato l'ObjectMapper? Poiché il SimpleModule deve essere iniettato nell'ObjectMapper. – Augusto

+0

Non l'ho configurato, il modulo dovrebbe essere configurato per impostazione predefinita, e lo fa ... Posso anche usare un altro modo, cosa suggerisci? – rascio

+0

Puoi guardare la classe 'JacksonAutoConfiguration' da spring-boot e provare a eseguire il debug un po '. Lo sto leggendo e sto cercando di capire come diavolo riesce a configurare l'ObjectMapper. Sembra che se la classe 'LocalDateDeserializer' (dalla versione 1.2.2) si trova nel classpath, dovrebbe caricarla automaticamente come parte di' JodaDateTimeJacksonConfiguration'. (Ho ancora difficoltà a comprendere questo tipo di configurazione: S) – Augusto

risposta

0

In base allo Spring Boot documentation, per configurare l'ObjectMapper è possibile definire il bean autonomamente e annotarlo con @Bean e @Primary. Lì puoi registrare il modulo. Oppure puoi aggiungere un bean di tipo Jackson2ObjectMapperBuilder in cui puoi personalizzare ObjectMapper.

+4

La stessa documentazione che hai collegato dice anche" Un altro modo per personalizzare Jackson è aggiungere i bean di tipo com.fasterxml.jackson.databind.Module al tuo contesto. Saranno registrati con ogni bean di tipo ObjectMapper, fornendo un meccanismo globale per contribuire con moduli personalizzati quando aggiungi nuove funzionalità alla tua applicazione. " Sembra che questo sia ciò che il poster originale sta cercando di fare. –

Problemi correlati