SpringBoot集成RestTemplate组件

简介: SpringBoot集成RestTemplate组件

背景

搭建SpringBoot项目框架,将要集成远程调用统一解决方案,来对其他服务的接口进行访问。

比如Http接口、WebService接口等等的其他服务对外暴露的接口。

针对SpringBoot环境集成RestTemplate组件,并且生成出相关的工具类,进而使开发效率有更好的提升。

实现的具体部署

还是一样,要先在pom文件引入相应的jar包。

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

不要太过好奇为什么不引入RestTemplate的jar包,因为starter-web依赖就已经默认引入了相应包了。

引入这个包之后,我们就可以在相应的类中进行属性装配了,如下代码:

@Autowired
private RestTemplate restTemplate;

通过这种方式就可以调用相关的方法了,当然这里也可以直接new一个RestTemplate对象也是可以的。

扩展

集成RestTemplate,不只是引入一个jar包就可以了,更多的是根据项目的实际情况不同,去做出一些自定义调整,我这里是引入了一个自动配置类,我把代码贴出来,大家可以进行一个参考。

@Configuration
public class RestTemplateAutoConfiguration {
    /**
     * 连接超时时间
     */
    @Value("${rest.connection.timeout}")
    private Integer connectionTimeout;
    /**
     * 信息读取超时时间
     */
    @Value("${rest.read.timeout}")
    private Integer readTimeout;
    /**
     * 声明RestTemplate服务
     * @return RestTemplate
     */
    @Bean
    public RestTemplate registerTemplate(ClientHttpRequestFactory simileClientHttpRequestFactory) {
        RestTemplate restTemplate = new RestTemplate();
        //配置自定义的message转换器
        List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
        messageConverters.add(new RestTemplateHttpMessageConverter());
        restTemplate.setMessageConverters(messageConverters);
        //配置自定义的interceptor拦截器
        List<ClientHttpRequestInterceptor> interceptors= new ArrayList<>();
        interceptors.add(new HeadClientHttpRequestInterceptor());
        interceptors.add(new TrackLogClientHttpRequestInterceptor());
        restTemplate.setInterceptors(interceptors);
        //配置自定义的异常处理
        restTemplate.setErrorHandler(new RestTemplateExceptionHandle());
        restTemplate.setRequestFactory(simileClientHttpRequestFactory);
        return restTemplate;
    }
    /**
     * 初始化请求工厂
     * @return SimpleClientHttpRequestFactory
     */
    @Bean
    public SimpleClientHttpRequestFactory getFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setConnectTimeout(connectionTimeout);
        factory.setReadTimeout(readTimeout);
        return factory;
    }
    /**
     * 数据转换器
     */
    static class RestTemplateHttpMessageConverter extends MappingJackson2HttpMessageConverter {
        public RestTemplateHttpMessageConverter() {
            List<MediaType> mediaTypes = new ArrayList<>();
            mediaTypes.add(MediaType.TEXT_PLAIN);
            mediaTypes.add(MediaType.TEXT_HTML);  //加入text/html类型的支持
            setSupportedMediaTypes(mediaTypes);// tag6
        }
    }
}

当然了,在application.yml中也要对其进行参数的配置,如下代码所示。

rest:
  connection:
    timeout: 10000
  read:
    timeout: 20000
目录
相关文章
|
20天前
|
消息中间件 Java Kafka
Springboot集成高低版本kafka
Springboot集成高低版本kafka
|
26天前
|
NoSQL Java Redis
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
300 0
|
1月前
|
NoSQL Java Redis
SpringBoot集成Redis
SpringBoot集成Redis
457 0
|
1月前
|
NoSQL Java Redis
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
282 1
|
1天前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
本文探讨了Spring Boot如何实现像普通Java程序一样通过main方法启动,关键在于Spring Boot的自动配置、内嵌Servlet容器(如Tomcat)以及`SpringApplication`类。Spring与Tomcat集成有两种方式:独立模式和嵌入式模式,两者通过Servlet规范、Spring MVC协同工作。Spring和Tomcat的生命周期同步涉及启动、运行和关闭阶段,通过事件和监听器实现。文章鼓励读者从实现Tomcat中学习资源管理和生命周期管理。此外,推荐了Netty权威指南系列文章,并提到了一个名为mini-cat的简易Tomcat实现项目。
|
2天前
|
Java Spring
Spring Boot脚手架集成校验框架
Spring Boot脚手架集成校验框架
6 0
|
3天前
|
Java Docker 容器
SpringBoot项目集成XXL-job
SpringBoot项目集成XXL-job
|
5天前
|
Java 关系型数据库 数据库
【SpringBoot系列】微服务集成Flyway
【4月更文挑战第7天】SpringBoot微服务集成Flyway
【SpringBoot系列】微服务集成Flyway
|
20天前
|
SQL Java 调度
SpringBoot集成quartz定时任务trigger_state状态ERROR解决办法
SpringBoot集成quartz定时任务trigger_state状态ERROR解决办法
|
27天前
|
NoSQL Java Redis
SpringBoot集成Redis
SpringBoot集成Redis
54 1