引自:http://www.zimug.com/ 1.常见的http服务的通信方式 经常使用的方式有HttpClient.OkHttp.RestTemplate.其中RestTemplate是一种更优雅的调用RESTful服务的方式. RestTemplate使用了模版方法的设计模式,借助 RestTemplate,Spring应用可以很方便地访问REST资源. 2.主要的方法 get请求常用方法: getForObject //返回响应内容 getForEntity //返回响应体 post请…
面向切面编程可以实现在不修改原来代码的情况下,增加我们所需的业务处理逻辑,比如:添加日志.本文AOP实例是基于Aspect Around注解实现的,我们需要在调用API函数的时候,统计函数调用的具体信息,包括:函数签名,传入参数,函数处理时间,异常信息拦截等, @Around是可以同时在所拦截方法的前后执行一段逻辑,可以满足我们的需求. 目标对象 目标对象是一个客户管理服务,下面分别是其服务接口定义和具体业务逻辑实现. API public interface CustomerManagerSe…
主要拦截前端或后天的请求,打印请求方法参数.返回值.耗时.异常的日志.方便开发调试,能很快定位到问题出现在哪个方法中. 前端请求拦截,mvc的拦截器 import java.util.Date; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServl…
Spring中的RestTemplate类源自spring-web,http调用中设置超时时间.设置连接池管理等非常重要,保证了系统的可用性,避免了长时间连接不上或者等待数据返回,拖垮系统. 现贴出工作上关于RestTemplate的标准配置,设置了超时时间.连接池等,开箱即用. package com.pab.bloan.charge.app.common.config; import com.alibaba.fastjson.support.spring.FastJsonHttpMessag…
参考地址:https://www.jianshu.com/p/6f3ee90ab7d3 示例: public static void main(String[] args) throws InterruptedException, ExecutionException { CompletableFuture<String> cf1 = new CompletableFuture<>(); new Thread(() -> { // 模拟执行耗时任务 System.out.pr…
背景: 在项目开发中,有时候会出现接口调用失败,本身调用又是异步的,如果是因为一些网络问题请求超时,总想可以重试几次把任务处理掉. 一些RPC框架,比如dubbo都是有重试机制的,但是并不是每一个项目多会使用dubbo框架,常规的小项目有时候直接使用http进行不同项目之间的交互. 个人想法: 使用spring aop和自定义注解来,建立一套重试机制. 根据切入点和自定义注解,来完成重试工作. exps: 定义一个注解: import org.springframework.stereotype…
Consul可以用于实现分布式系统的服务发现与配置 服务调用有两种方式: A.使用RestTemplate 进行服务调用 负载均衡——通过Ribbon注解RestTemplate B.使用Feign 进行声明式服务调用 负载均衡——默认使用Ribbon实现  查看 先使用RestTemplate来实现 1.服务注册发现中心 启动Consul consul agent -dev 2.服务端 在spring boot2X整合Consul 的基础上 添加服务provider,provider1 pro…
Spring的RestTemplate及大地简化了REST Client的开发,但每次还要编写大量的模板代码,代码不够简洁.我对他进行了一次包装,采用接口来声明REST接口,使用Annotation对interface的方法进行标注.如下声明一个REST接口 //接口必须继承BaseRestClient,提供了一个setUrl的基本方法. public interface ITestRest extends BaseRestClient { //声明一个REST方法,method是GET,在路径…
序言 Spring Cloud Netflix的微服务都是以HTTP接口的形式暴露的,所以可以用Apache的HttpClient或Spring的RestTemplate去调用 而Feign是一个使用起来更加方便的HTTP客户端,它用起來就好像调用本地方法一样,完全感觉不到是调用的远程方法 Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数.格式.…
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud费话之Eureka接口调用(feign) springcloud费话之断路器(hystrix in feign) springcloud费话之配置中心基础(SVN) springcloud费话之配置中心客户端(SVN) 使用eureka服务发现实现服务器之间的http访问(feign) 使用rest…