• 使用RestTemplateBuilder配置RestTemplate


    简介

    在速教程中,我们将了解如何配置Spring  RestTemplate  bean。

    让我们首先讨论三种主要配置类型:

    • 使用默认的RestTemplateBuilder
    • 使用RestTemplateCustomizer
    • 创建我们自己的RestTemplateBuilder

    2.使用默认RestTemplateBuilder进行配置

    要以这种方式配置RestTemplate,我们需要 Spring Boot提供的默认RestTemplateBuilder bean 注入到我们的类中:

    private RestTemplate restTemplate;
     
    @Autowired
    public HelloController(RestTemplateBuilder builder) {
        this.restTemplate = builder.build();
    }
     

    使用此方法创建RestTemplate  bean的范围仅限于我们构建它的类

    3.使用RestTemplateCustomizer进行配置 

    通过这种方法,我们可以创建一个应用程序范围的定制。

    这是一种稍微复杂的方法。为此,我们需要创建一个实现RestTemplateCustomizer 的类并将其定义为bean:

    public class CustomRestTemplateCustomizer implements RestTemplateCustomizer {
        @Override
        public void customize(RestTemplate restTemplate) {
            restTemplate.getInterceptors().add(new CustomClientHttpRequestInterceptor());
        }
    }
     

    该  CustomClientHttpRequestInterceptor 拦截器用来记录请求的日志:

    public class CustomClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
        private static Logger LOGGER = LoggerFactory
          .getLogger(CustomClientHttpRequestInterceptor.class);
     
        @Override
        public ClientHttpResponse intercept(
          HttpRequest request, byte[] body, 
          ClientHttpRequestExecution execution) throws IOException {
      
            logRequestDetails(request);
            return execution.execute(request, body);
        }
        private void logRequestDetails(HttpRequest request) {
            LOGGER.info("Headers: {}", request.getHeaders());
            LOGGER.info("Request Method: {}", request.getMethod());
            LOGGER.info("Request URI: {}", request.getURI());
        }
    }
     

    现在,我们将CustomRestTemplateCustomizer 定义  为配置类或Spring Boot应用程序类中的bean:

    @Bean
    public CustomRestTemplateCustomizer customRestTemplateCustomizer() {
        return new CustomRestTemplateCustomizer();
    }
     

    使用此配置,应用程序中使用的每个RestTemplate都将存在此自定义拦截器。

    4.通过创建我们自己的RestTemplateBuilder进行配置

    这是自定义RestTemplate的最极端方法 它  禁用了RestTemplateBuilder的默认自动配置  因此我们需要自己定义它:

    @Bean
    @DependsOn(value = {"customRestTemplateCustomizer"})
    public RestTemplateBuilder restTemplateBuilder() {
        return new RestTemplateBuilder(customRestTemplateCustomizer());
    }
     

    在此之后,我们可以将自定义构建器注入到我们的类中,就像我们使用默认的RestTemplateBuilder一样,  并像往常一样创建RestTemplate

    private RestTemplate restTemplate;
     
    @Autowired
    public HelloController(RestTemplateBuilder builder) {
        this.restTemplate = builder.build();
    }
     

    5.结论

    我们已经看到了如何配置RestTemplate使用默认RestTemplateBuilder,建立我们自己的RestTemplateBuilder,或使用RestTemplateCustomizer bean

  • 相关阅读:
    生成本地测试用https证书,支持通配符和多域名,初学OpenSSL
    SuperSocket.WebSocket.WebSocketServer.Setup无法启动
    CSS 特殊属性介绍之 pointer-events
    关于面试题 Array.indexof() 方法的实现及思考
    关于 CSS 反射倒影的研究思考
    Carousel 旋转画廊特效的疑难杂症
    有趣的 CSS 像素艺术
    视差滚动技术的简介及运用
    Yeoman 官网教学案例:使用 Yeoman 构建 WebApp
    展望未来:使用 PostCSS 和 cssnext 书写 CSS
  • 原文地址:https://www.cnblogs.com/gc65/p/10645825.html
Copyright © 2020-2023  润新知