Использование Gson вместо Джексона в Spring Webflux - PullRequest
0 голосов
/ 15 октября 2019

У нас уже есть много проектов Spring MVC, которые все используют gson вместо jackson для кодирования тела ответа. Наши классы bean-компонентов написаны на основе аннотации gson. Сейчас я настраиваю сервер отдыха Spring Webflux. Это сэкономило бы много работы, если бы мы могли использовать старые классы bean-компонентов из наших проектов Spring MVC.

Я пробовал свойство spring.http.converters.preferred-json-mapper=gson безрезультатно.

Я пробовал HttpMessageConverterbean-компонент, который включен в пакеты 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?

Любая помощь приветствуется.

...