У нас уже есть много проектов Spring MVC, которые все используют gson вместо jackson для кодирования тела ответа. Наши классы bean-компонентов написаны на основе аннотации gson. Сейчас я настраиваю сервер отдыха Spring Webflux. Это сэкономило бы много работы, если бы мы могли использовать старые классы bean-компонентов из наших проектов Spring MVC.
Я пробовал свойство spring.http.converters.preferred-json-mapper=gson
безрезультатно.
Я пробовал HttpMessageConverter
bean-компонент, который включен в пакеты webflux, но не работает, как в проектах Spring MVC.
Я много гуглил, и единственное, что полезно, - это реализовать класс org.springframework.http.codec.HttpMessageEncoder
и установить его на WebFluxConfigurer.configureHttpMessageCodecs()
Метод:
@Configuration
public class WebConfiguration implements WebFluxConfigurer {
@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
configurer.customCodecs().decoder(new GsonHttpMessageDecoder());
configurer.customCodecs().encoder(new GsonHttpMessageEncoder());
}
private static class GsonHttpMessageEncoder implements HttpMessageEncoder {
...
}
private static class GsonHttpMessageDecoder implements HttpMessageDecoder {
...
}
}
Я еще не пробовал, так как это немного сложно. Есть ли какой-нибудь простой способ заменить Джексона на gson в Spring Webflux?
Любая помощь приветствуется.