GatewayConfig.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.zhouhong.gatewayserver.config;
  2. import feign.codec.Decoder;
  3. import org.springframework.beans.BeansException;
  4. import org.springframework.beans.factory.ObjectFactory;
  5. import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
  6. import org.springframework.cloud.client.loadbalancer.LoadBalanced;
  7. import org.springframework.cloud.openfeign.support.ResponseEntityDecoder;
  8. import org.springframework.cloud.openfeign.support.SpringDecoder;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.http.MediaType;
  12. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  13. import org.springframework.web.client.RestTemplate;
  14. import org.springframework.web.reactive.function.client.ExchangeStrategies;
  15. import org.springframework.web.reactive.function.client.WebClient;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. @Configuration
  19. public class GatewayConfig {
  20. @LoadBalanced
  21. @Bean
  22. public RestTemplate restTemplate() {
  23. return new RestTemplate();
  24. }
  25. @Bean
  26. public Decoder feignDecoder() {
  27. return new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter()));
  28. }
  29. public ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() {
  30. final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(new GateWayMappingJackson2HttpMessageConverter());
  31. return new ObjectFactory<HttpMessageConverters>() {
  32. @Override
  33. public HttpMessageConverters getObject() throws BeansException {
  34. return httpMessageConverters;
  35. }
  36. };
  37. }
  38. public class GateWayMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
  39. GateWayMappingJackson2HttpMessageConverter() {
  40. List<MediaType> mediaTypes = new ArrayList<>();
  41. mediaTypes.add(MediaType.valueOf(MediaType.TEXT_HTML_VALUE + ";charset=UTF-8"));
  42. setSupportedMediaTypes(mediaTypes);
  43. }
  44. }
  45. @Bean
  46. @LoadBalanced
  47. public WebClient.Builder loadBalancedWebClientBuilder() {
  48. return WebClient.builder().exchangeStrategies(ExchangeStrategies.builder().codecs(
  49. clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs().maxInMemorySize(10 * 1024 * 1024)).build());
  50. }
  51. }