Sto provando a serializzare e deserializzare POJO da e verso JSON su percorsi Camel usando Jackson. Alcuni di questi hanno campi di LocalDate di Java 8, e voglio che siano serializzati come una stringa YYYY-MM-DD, non come una matrice di interi.Come configurare Jackson ObjectMapper per Camel in Spring Boot
Utilizziamo solo la configurazione Java per la nostra applicazione Spring Boot, quindi nessuna configurazione Camel XML.
ho creato con successo un ObjectMapper che fa quello che voglio, che viene utilizzato da altre parti del nostro sistema aggiungendo questo ai nostri dipendenze:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
e questo alla nostra configurazione dell'applicazione:
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
return builder
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build();
}
Esempio percorso REST in uscita:
@Component
public class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
restConfiguration().component("servlet").contextPath("/mycontext")
.port(8080).bindingMode(RestBindingMode.json);
rest("/myendpoint)
.get()
.route()
.to("bean:myService?method=myMethod()");
}
}
Exa mple in entrata percorso messaggio:
@Component
public class MyRouteBuilder extends RouteBuilder {
@Autowired
private MyBean myBean;
@Override
public void configure() {
from(uri)
.unmarshal().json(JsonLibrary.Jackson)
.bean(myBean);
}
}
Tuttavia, per impostazione predefinita Camel crea le proprie istanze ObjectMapper quindi non salire su entrambi i JSR310 serializzatori/deserializzatore che Jackson2ObjectMapperBuilder
aggiunge automaticamente, o disabili WRITE_DATES_AS_TIMESTAMPS
funzione. Ho letto la documentazione Camel JSON, ma non mostra come aggiungere un DataFormat personalizzato utilizzando la configurazione di Spring o come applicare una personalizzazione globale per tutti i tipi.
Quindi, come posso dire a Camel di utilizzare il mio ObjectMapper, usando solo la configurazione Java di Spring Boot?
Vedere le abilitazione/disabilitazione delle funzionalità di jackson: http://camel.apache.org/json.html –
Si prega di condividere il percorso cammello pure. –
@ClausIbsen L'ho letto, ma non mostra come rendere Camel consapevole del DataFormat personalizzato. O come farlo si applica a tutti i POJO piuttosto che a una classe specifica. –