Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

484
Views
Cómo serializar java.time.Instant como cadena ISO en Spring Webflux

¿Cómo puedo configurar webflux para serializar java.time (específicamente Instant) como una cadena de fecha ISO?

Con el siguiente código obtengo:

{"id":"id","timestamp":1606890022.131813600}

Me gustaría conseguir

{"id":"id","timestamp":"2020-12-02T07:20:16.553Z"}

 @EnableWebFlux @SpringBootApplication public class WebfluxJavaTimeSerializationApplication { public static void main(String[] args) { SpringApplication.run(WebfluxJavaTimeSerializationApplication.class, args); } @Bean public RouterFunction<?> routerFunction() { return route().GET("/resource", request -> ServerResponse.ok().body(Mono.just(new Resource()),Resource.class)).build(); } public class Resource { String id = "id"; Instant timestamp = Instant.now(); public String getId() { return id; } public Instant getTimestamp() { return timestamp; } } }

He probado configuraciones como:

 @Configuration @EnableWebFlux public class WebConfig implements WebFluxConfigurer { //moved from application class @Bean public RouterFunction<?> routerFunction() { return route().GET("/resource", request -> ServerResponse.ok().body(Mono.just(new Resource()), Resource.class)).build(); } @Override public void addFormatters(FormatterRegistry registry) { DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar(); registrar.setUseIsoFormat(true); registrar.registerFormatters(registry); } @Override public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) { ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); configurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper)); configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper)); } }

pero no cambia la respuesta. Creo que los formateadores solo se usan para la deserialización y los códecs para WebClient (pero pueden estar equivocados).

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Está deshabilitando la configuración automática de Jackson y WebFlux debido a que agregó @EnableWebFlux . Con este Spring Boot, retrocederá en la configuración de las cosas, una de esas cosas es un Jackson completamente preconfigurado.

Así que trate de no engañar a los valores predeterminados en este caso.

Elimine @EnableWebFlux y también elimine el formato específico para Jackson. En realidad, podría eliminar los implements WebFluxConfigurer y eliminar los métodos anulados.

over 4 years ago · Santiago Trujillo Report

0

Tengo el mismo problema que Streef.

En mi caso, implementar WebFluxConfigurer y usar configureHttpMessageCodecs es lo que resuelve el problema.

 @Configuration public class JacksonConfiguration implements WebFluxConfigurer { private final ObjectMapper mapper; public JacksonConfiguration(ObjectMapper mapper) { this.mapper = mapper; } @Override public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) { configurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(mapper)); configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(mapper)); WebFluxConfigurer.super.configureHttpMessageCodecs(configurer); } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!