服务提供者

服务提供者,是位于其他项目里面的。

服务提供者提供的方法,在Controller层里面,有可访问的Url。

@Controller
@RequestMapping("/order")
public class OrderDetailController { @ResponseBody
@RequestMapping(value="/detail/cdkey",method=RequestMethod.POST)
public OrderDetail getOrderDetailByCdkey(@RequestParam("cdkey") String cdkey){
//其他逻辑忽略
} }

服务消费者Feign

@FeignClient里面的value为服务提供者的服务名,fallback为服务熔断的class。

@RequestMapping的value属性为服务提供者的Url。

@FeignClient(value = "base",fallback = OrderDetailHystrix.class)
public interface OrderDetailService { @RequestMapping(value="order/detail/cdkey",method=RequestMethod.POST)
JSONObject getOrderDetailByCdkey(@RequestParam("cdkey") String cdkey);
}

除了使用如上的@RequestParam,还可以使用@RequestBody传递对象,比如

   @RequestMapping(value="order/detail/cdkey",method=RequestMethod.POST)
JSONObject getOrderDetailByCdkey(@RequestBody User user);

如果需要使用占位符,也可以用@PathVariable,示例如下:

 @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
Result get(@PathVariable("id") Integer id);

注意,最好让方法参数注解和服务提供者的方法参数注解保持一致。

服务熔断

出现异常,可以通过熔断保护服务。

熔断器要实现Feign接口。还要加上注解@Component。

@Component
public class OrderDetailHystrix implements OrderDetailService { @Override
public JSONObject getOrderDetailByCdkey(String cdkey) {
JSONObject resultJson = new JSONObject();
resultJson.put("errcode",AUTH_ORDER_SERVICE_ERROR.getCode() );
resultJson.put("description", AUTH_ORDER_SERVICE_ERROR.getMsg() );
return resultJson;
} }

使用Feign服务接口

可以在其他类(Service或Controller都可以)中注入已经声明的Feign接口,并调用其中的方法。

注入方式如下所示:

	@Autowired
private OrderDetailService OrderDetailService;

使用服务中的方法:

	//调用订单详情服务,获取订单日期
JSONObject jsonObject=orcmOrderDetailService.getOrderDetailByCdkey(cdkey);

如果在使用Feign进行服务消费时出错,可以参考以下内容进行排错:

微服务SpringCloud无法进行服务消费

Spring Cloud Feign踩坑记录(二)

SpringCloud Feign 常用代码的更多相关文章

  1. SpringCloud+Feign环境下文件上传与form-data同时存在的解决办法(2)

    书接上文. 上文中描述了如何在 SpringCloud+Feign环境下上传文件与form-data同时存在的解决办法,实践证明基本可行,但却会引入其他问题. 主要导致的后果是: 1. 无法与普通Fe ...

  2. SpringCloud Feign 之 Fallback初体验

    SpringCloud Feign 之 Fallback初体验 在微服务框架SpringCloud中,Feign是其中非常重要且常用的组件.Feign是声明式,模板化的HTTP客户端,可以帮助我们更方 ...

  3. SpringCloud Feign通过FallbackFactory显示异常信息

    SpringCloud Feign可以进行服务消费,而且内置了Hystrix,能够进行熔断. Feign可以通过fallback指定熔断回调的类.代码示例及讲解可见: https://www.cnbl ...

  4. GCD 常用代码

    GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...

  5. 转--Android实用的代码片段 常用代码总结

    这篇文章主要介绍了Android实用的代码片段 常用代码总结,需要的朋友可以参考下     1:查看是否有存储卡插入 复制代码 代码如下: String status=Environment.getE ...

  6. 刀哥多线程之03GCD 常用代码

    GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...

  7. jquery常用代码集锦

    1. 如何修改jquery默认编码(例如默认GB2312改成 UTF-8 ) 1 2 3 4 5 $.ajaxSetup({     ajaxSettings : {         contentT ...

  8. Mysql:常用代码

    C/S: Client Server B/S: Brower Server Php主要实现B/S .net IIS Jave TomCat LAMP:L Mysql:常用代码 Create table ...

  9. javascript常用代码大全

    http://caibaojian.com/288.html    原文链接 jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...

随机推荐

  1. UIView与CALayer的区别,很详细(基础教学拓展)转

    研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人,其 ...

  2. JavaScript原型链以及Object,Function之间的关系

    JavaScript里任何东西都是对象,任何一个对象内部都有另一个对象叫__proto__,即原型,它可以包含任何东西让对象继承.当然__proto__本身也是一个对象,它自己也有自己的__proto ...

  3. vue遍历数据是对数据进行筛选 过滤 排序

    使用computed 方法来过滤筛选数据;或者使用methods 方式来筛选过滤数据 <body> <div id="app"> <ul> &l ...

  4. 利用position absolute使div居中

    外层DIV{position:realtive}内层DIV{positon:absolute;top:50%;left:50%;margin-top:-100px;margin-left:-150px ...

  5. JS基础 浏览器弹出的三种提示框(提示信息框、确认框、输入文本框)

    浏览器的三种提示框 alert() //提示信息框 confirm() //提示确认框 prompt() //提示输入文本框 1.alert( ) 提示信息框 <script> alert ...

  6. 记一次IntelliJ IDEA中文乱码问题

    问题描述:输出控制台中文乱码,反正就是各种百度解决不了 问题解决:https://blog.csdn.net/m0_37893932/article/details/78280663 解决方案:我用的 ...

  7. UML——从类图到C++

    简易软件开发流程 实践中,use case and description.class diagram与sequence diagram三者搭配,几乎是UML项目的基本类型,所以在分工或外包的设计文档 ...

  8. 最大m子段和

    最大m子段和 定义一串子段s1,s2,s3 ... sn-1,sn 求m段不交叉最大子段和 解:设dp[i][j]代表前j个数分成i段的最大和(包括a[j]) 状态转移方程: dp[i][j]=Max ...

  9. 列车网络智能诊断工具链—MVB智能诊断仪

    由于MVB网络采用分布式网络结构,各组网设备分布在不同电气柜,甚至是在不同车辆上,各组网设备往往来自于不同供应商,这给MVB网络调试及诊断带来了很大的难度.目前MVB网络调试及故障排查,主要是通过仪器 ...

  10. http消息与webservice

    别人的:在一台配置较低的PC上,同时开启服务端与客户端,10000条数据,使用基于http的消息逐条进行传递,从开始传递至全部接收并处理完毕,大概需要465秒的时间:而在同一台机器上,使用WebSer ...