服务提供者

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

服务提供者提供的方法,在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. head 与 tail

    head head [-n] 数字『文件』 显示前面n行 例如 head -n 3 test 显示 test 文件的前 3 行,也可以写作 head -3 test 比较有趣的是 -n 后面的数字,可 ...

  2. 浅谈JS中 var let const 变量声明

    浅谈JS中 var let const 变量声明 用var来声明变量会出现的问题: 1. 允许重复的变量声明:导致数据被覆盖 2. 变量提升:怪异的数据访问.闭包问题 3. 全局变量挂载到全局对象:全 ...

  3. 记录一次git回滚代码

    老大临时让更新一版代码到本地,熟练的git fetch/git merge 之后,出来了一批改动的文件,但是并不是我改动的. 我以为是版本迭代出来的其他同事改的,我就直接给add commit到我的版 ...

  4. pip笔记(译)

    从PyPI中安装包 >>> pip install SomePackage [...] Successfully installed SomePackage 从PyPI或其他地方安装 ...

  5. Linux E667 同步失败

    在使用Vim编辑/proc目录下的文件后,保存,显示"E667 同步失败" 原因 因为proc这个目录是一个虚拟文件系统,它放置的数据都是在内存中,本身不占有磁盘空间,所以使用Vi ...

  6. spring boot项目:java -jar命令 没有主清单属性

    pom文件中,在build的plugins中增加插件: <plugin> <groupId>org.springframework.boot</groupId> & ...

  7. golang错误处理

    1. 错误 错误用内建的error类型来表示. type error interface { Error() string } error 有了一个签名为 Error() string 的方法.所有实 ...

  8. [I2C].I2C总线详解

    转自:https://www.cnblogs.com/BitArt/archive/2013/05/27/3101037.html 一. 基本信息 1. 概述 I²C 是Inter-Integrate ...

  9. Centos7源码部署apache/httpd服务

    httpd:是一个提供网站服务的程序 监听端口:80 环境准备: Linux CentOS7.3系统 使用一台服务端,一台客户端即可: 一.安装httpd 1:安装 [root@localhost ~ ...

  10. 《基于 UML 的教务系统设计方法研究》论文笔记(十五)

    标题:基于 UML 的教务系统设计方法研究 时间:2009 来源:太原师范学院 关键词:UML:面向对象:建模:教务管理系统. 二.研究内容 UML 建模 UML 涵盖了面向对象的分析.设计和实现,融 ...