springcloud-fegin笔记
标签: java进阶篇
刚学这个时候很懵逼,不知道这个是干嘛的,你要调用服务直接用RestTemplate来调用服务不就行了嘛,何必再来一个fegin。后来看了些博客,发现点奥秘。
相同点:
1.他们都是基于REST接口调用服务的(说白了两个都是拿来调接口的)
区别:
1.RestTemplate是基于模板来调用的,大家可以看如下代码:
可以看到他的URL参数是以编程方式构造的,并且根据你要请求的类型可以更改get,delete等等,比较灵活
再来看看fegin,如下图

这样调用是不是就简介了很多呢,哪这个DeptClientService是拿来的呢:看下图

一个接口即可搞定,具体实现类他会更具@FeignClient(value=“xx”)这个微服务中找到对应提供者的访问接口
2.fegin还可以和hystrix结合支持服务降级和熔断操作
@FeignClient(value = "MICROSERVICECLOUD-DEPT",fallbackFactory=DeptClientServiceFallbackFactory.class)
加入以上注解当出调用异常或者服务器宕机会去执行DeptClientServiceFallbackFactory这个类所给出处理办法:
@Component // 不要忘记添加,不要忘记添加 //DeptClientService对应的接口名
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService>
{
@Override
public DeptClientService create(Throwable throwable)
{
return new DeptClientService() {
@Override
public Dept get(long id)
{
return new Dept("出异常了。。。。该怎么办啊。。");
}
@Override
public List<Dept> list()
{
return null;
}
@Override
public boolean add(Dept dept)
{
return false;
}
};
}
}
最后说下fegin具体用法:
导入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
1.启动类增加@EnableFeignClients
2.定义接口 添加@FeignClient(value = “微服务名字”)注解
@FeignClient(value = "MICROSERVICECLOUD-DEPT")
//@FeignClient(value = "MICROSERVICECLOUD-DEPT",fallbackFactory=DeptClientServiceFallbackFactory.class)
public interface DeptClientService
{
@RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
public Dept get(@PathVariable("id") long id);
@RequestMapping(value = "/dept/list", method = RequestMethod.GET)
public List<Dept> list();
@RequestMapping(value = "/dept/add", method = RequestMethod.POST)
public boolean add(Dept dept);
}
3.通过@Autowired注入service
@Autowired
private DeptClientService service;
@RequestMapping(value = "/consumer/dept/get/{id}")
public Dept get(@PathVariable("id") Long id)
{
return this.service.get(id);
}
如有误还请指正
智能推荐
笔记
静态存储区、栈区、堆区的区别 存储内容 空间大小 有无碎片(堆有) 分配效率 码析 链接 基于TCP的Socket 编程 客户端的流程如下: (1)创建套接字(socket) (2)向服务器发出连接请求(connect) (3)和服务器端进行通信(send/recv) (4)关闭套接字 服务器端的流程如下: (1)创建套接字(socket) (2)将套接字绑定到一个本地地址和端口上(bind) (...
笔记
题目1:编写一个函数将列表子元素顺序反转 考察点 子元素 性能 解答 方法1:直接的DOM操作 缺点:每次循环都影响dom生成,损耗性能 方法2: fragment 优点:使用到了createDocumentFragment() 方法3:Array reverse 优点:思路加分,同时性能较高 方法4:innerHTML 优点:循环里不会影响DOM生成,效率高 总结 DOM:查找 getEleme...
笔记
标识符的规则 · 标识符由字母、下划线和数字组成,且数字不能开头命名规则驼峰命名法:小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName还有一种命名法是用下划线“_...
笔记
06 一、面向对象(OOP) 二、类和对象 类的说明 对象的创建和使用 创建对象的内存理解 两个引用指向同一个对象 三、面向对象中的其他内容 成员变量和局部变量 匿名对象的理解和使用 四、封装 private关键字 Getter和Setter 变量的访问原则和this关键字 构造方法概述...
猜你喜欢
笔记
笔记13 一、Set集合 Set集合的遍历 二、HashSet保证元素唯一性的原理 HashSet存储jdk提供的元素的类型 HashSet存储自定义类型元素 HashCode方法 HashSet保证唯一性原理的总结 保证唯一性的操作 LinkedHashSet 三、Map Map集合中的方法 Map集合的第一种遍历思路(熟练掌握) Map集合的第二种遍历思路 HashMap LinkedHash...
笔记
笔记12 一、集合的概述 体系结构 Collection的概述和常用方法 Collection集合的第一种遍历 Collection中带All的方法 集合遍历的第二种方式:迭代器 二、List 第三种遍历方式 并发修改异常 三、List的实现类 ArrayList LinkedList ArrayList和LinkedList在查询或者增删元素时的效率比较(在头部) 四、泛型 泛型类的定义 泛型方...
Android 炫酷的横向和环形进度条的实例
一、概述 最近需要用进度条,秉着不重复造轮子的原则,上github上搜索了一番,看了几个觉得比较好看的ProgressBar,比如:daimajia的等。简单看了下代码,基本都是继承自View,彻彻底底的自定义了一个进度条。盯着那绚丽滚动条,忽然觉得,为什么要通过View去写一个滚动条,系统已经提供了ProgressBar以及属于它的特性,我们没必要重新去构建一个,但是系统的又比较丑,不同版本变现...
pcap包结构&SNI字段的解析
pcap文件格式是常用的数据报存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包。 文件格式: Pcap文件头(24字节)+数据包头(wireshark增加的)+数据包(网络中抓取的)+…… 1.pcap文件头结构 各字段说明: Magic:4B:0×...
MC9S12XEP100的IIC模块(IICV3)
最近在写DS3231时钟芯片的驱动,这个芯片使用IIC进行通讯,以前没有用过IIC模块,照着教材和示例程序写程序后发现各种问题。没办法,还是官方数据手册靠谱,遂把相应部分又翻译了一遍。果然发现示例程序纯粹就是个玩具,一点用都没有。。。 第15章 集成电路总线(IICV3) 译者注:译者博客(http://blog.csdn.net/lin_strong),转载请保留这条。此为 MC9S12XEP1...
