zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    CentOS7虚拟机安装Linux教程及安装后所遇到的问题
    华为测试用例模板简写
    python字符串大小写转换
    python解释器的下载和安装
    Git安装和常用命令
    python保留两位小数
    python中list的使用
    安装Maven及Eclipse中配置Maven
    伪静态技术
    CI框架两个application共用同一套 model
  • 原文地址:https://www.cnblogs.com/gc65/p/10645825.html
Copyright © 2011-2022 走看看