use*_*859 7 scala spring-boot spring-webflux
对于 Spring 来说org.springframework.web.client.RestTemplate,定义自己的 HttpMessageConverter 相对容易:
/**
* Set the message body converters to use.
* <p>These converters are used to convert from and to HTTP requests and responses.
*/
public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
validateConverters(messageConverters);
// Take getMessageConverters() List as-is when passed in here
if (this.messageConverters != messageConverters) {
this.messageConverters.clear();
this.messageConverters.addAll(messageConverters);
}
}
Run Code Online (Sandbox Code Playgroud)
当将我的客户端转换为响应式 WebClient 时,我没有找到像以前那样使用 RestTemplate 定义我自己的消息转换器的合适方法。
背景:我们的 Spring Boot 项目是基于 Scala 的,我们使用自己的转换器(基于com.fasterxml.jackson.module.scala.JacksonModule)来处理 Scala Case 类。
您可以通过为您的反应式世界注册自定义编解码器( Encoder、Decoder、HttpMessageReader、HttpMessageWriter) 。WebClient.builder()WebClient
WebClient client = WebClient.builder()
//see: https://github.com/jetty-project/jetty-reactive-httpclient
//.clientConnector(new JettyClientHttpConnector())
.clientConnector(new ReactorClientHttpConnector())
.codecs(
clientCodecConfigurer ->{
// .defaultCodecs() set defaultCodecs for you
// clientCodecConfigurer.defaultCodecs();
// You can customize an encoder based on the defualt config.
// clientCodecConfigurer.defaultCodecs().jackson2Encoder(...)
// Or
// use customCodecs to register Codecs from scratch.
clientCodecConfigurer.customCodecs().register(new Jackson2JsonDecoder());
clientCodecConfigurer.customCodecs().register(new Jackson2JsonEncoder());
}
)
.baseUrl("http://localhost:8080")
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6162 次 |
| 最近记录: |