SpringBoot-28-RestTemplate基本介绍

简介: SpringBoot-28-RestTemplate基本介绍

SpringBoot-28-RestTemplate基本介绍

什么是RestTemplate


RestTemplate是从Spring 3.0开始支执行Http请求的客户端工具,常见的Http客户端库有


Jjava JDK自带的HttpURLConnection


Apache HttpComponents


OkHttp


这些客户端库对,提供常见的REST请求模板,例如Get、Post、PUT和Delete请求,相对于直接使用底层Http客户端库,RestTemplate的操作更加方便、快捷在很大程度上提高开发效率。


SpringBoot使用RestTemplate

从Spring3.0引入RestTemplate后它就作为spring-web的一部分,而spring-boot-starter-web保重包含了spring-web



1523181bb0da1843f8174d2c4eab3f4a.png


因此只需要添加spring-boot-starter-web依赖即可

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

RestTemplate初始化


SpringBoot在AutoConfig的时候,自动注入了JDK自带的HttpURLConnection作为RestTemplate底层的Http客户端实现,也可以将底层的Http实现转换为OkHttp,Apache HttpComponents,并且需要初始化Bean。

@Configuration
public class MyRestTemplate {
    /**
     * 默认使用JDK 自带的HttpURLConnection作为底层实现
     * @return
     */
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

注入RestTemplate

我们将RestTemplate注入到我们需要使用的地方进行测试,我们使用知乎专栏免费测试接口地址,测试

@RequestMapping("/test")
@RestController
public class TestController {
    @Autowired
    private RestTemplate restTemplate;
    @GetMapping("zhihu")
    public String test(){
        String forEntity = restTemplate.getForObject("https://zhuanlan.zhihu.com/api/columns/zhihuadmin", String.class);
        return forEntity;
    }
}



然后在postman中输入http://localhost:8080/test/zhihu测试




ee8b3369dcd7e1c5b9dfc48c1276ff77.png

底层Http客户端库切换

我们在网上对Http客户端的测评来看OkHttp的性能优于Apache HttpComponents和JDK自带的HttpURLConnection,那么我们如何将底层Http客户端库切换为我们需要使用的Http客户端库呢?


切换为OkHttp

  • 添加依赖
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.1</version>
        </dependency>


  • 初始化RestTemplate的Bean
 @Bean
    public RestTemplate restTemplateOkHttp(){
        return  new RestTemplate(new OkHttp3ClientHttpRequestFactory());
    }


切换为Apache HttpComponents

  • 添加依赖
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
  • 初始化RestTemplate的Bean
    @Bean
    public  RestTemplate restTemplateHttpClient(){
        return new RestTemplate(new HttpComponentsClientHttpRequestFactory());
    }

如果您觉得本文不错,欢迎关注,点赞,收藏支持,您的关注是我坚持的动力!

目录
相关文章
|
9天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
28 0
|
6月前
|
Java
SpringBoot集成RestTemplate组件
SpringBoot集成RestTemplate组件
86 0
|
1月前
|
负载均衡 网络协议 Java
浅谈Springboot与Springcloud的区别
浅谈Springboot与Springcloud的区别
37 1
|
2月前
|
Java 开发者 Spring
Springboot中ApplicationContextInitializer的使用及源码分析
`ApplicationContextInitializer` 是 Spring Boot 提供的一个强大的接口,它允许开发者有机会在应用上下文刷新之前,注入自定义的启动逻辑或预处理。通过合理地利用这个接口,可以提升应用的可配置性和灵活性。了解如何运用 `ApplicationContextInitializer` 可以让你在 Spring Boot 应用的早期启动阶段,有更多控制权。
86 4
|
6月前
|
XML 开发框架 Java
springboot和springcloud有哪些区别?
springboot和springcloud区别有: 1、含义不同;2、作用不同;3、使用方式不同;4、特征不同;5、注释不同;6、优势不同;7、组件不同;8、设计目的不同。 其中,含义不同指的是springboot是一个快速开发框架,而SpringCloud是建立在SpringBoot上的服务框架。
100 4
|
6月前
|
Java Spring
springboot常用的注解有哪些,如何使用
【1月更文挑战第12天】springboot常用的注解有哪些,如何使用
35 1
|
6月前
|
Java
SpringBoot 那些可以帮助你的内置工具类
SpringBoot 那些可以帮助你的内置工具类
37 0
|
XML Java 数据格式
​SpringBoot-31-注解详解-1
​SpringBoot-31-注解详解-1
78 1
|
监控 Java Spring
《springboot实战》第五章 springboot 拦截器
《springboot实战》第五章 springboot 拦截器
92 0
|
Java 测试技术 应用服务中间件
SpringBoot底层原理
标注了@SpringBootApplication注解的是程序主入口类和主配置类,它是一个组合注解,包含以下几个主要的注解。因为这个时候,我们在单元测试中,并没有把springboot的一些配置整合进来,我们加上@SpringBootTest。我们可以看到用单元测试,也是可以的,那么什么情况单元测试不好用呢。先创建一个包,然后把主程序写在这个包下面。我们可以按住CTRL,然后点击去看看。我们发现这个父模块,自己还有父模块。我们可以发现它有一个父模块。,它里面的依赖如下代码所示。编写Controller。..
SpringBoot底层原理