大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Spring Cloud微服務(wù)實踐

Spring Cloud Feign聲明式服務(wù)消費

Feign是什么

Feign是Netflix公司開發(fā)的一個聲明式的REST調(diào)用客戶端;

Ribbon負(fù)載均衡、Hystrix服務(wù)熔斷是我們Spring Cloud中進(jìn)行微服務(wù)開發(fā)非常基礎(chǔ)的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時出現(xiàn)的,而且配置也都非常相似,每次開發(fā)都有很多相同的代碼,因此Spring Cloud基于Netflix Feign整合了Ribbon和Hystrix兩個組件,讓我們的開發(fā)工作變得更加簡單,就像Spring Boot是對Spring+SpringMVC的簡化一樣,Spring Cloud Feign對Ribbon負(fù)載均衡、Hystrix服務(wù)熔斷進(jìn)行簡化,在其基礎(chǔ)上進(jìn)行了進(jìn)一步的封裝,不僅在配置上大大簡化了開發(fā)工作,同時還提供了一種聲明式的Web服務(wù)客戶端定義方式;

使用Feign實現(xiàn)消費者

使用Feign實現(xiàn)消費者,我們通過下面步驟進(jìn)行:

第一步:創(chuàng)建普通Spring Boot工程

首先我們來創(chuàng)建一個普通的Spring Boot工程,取名為:05-springcloud-service-feign;

第二步添加依賴

要添加的依賴主要是spring-cloud-starter-netflix-eureka-client和spring-cloud-starter-feign,如下:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.4.5.RELEASE</version>
</dependency>
<!--Spring Cloud熔斷器起步依賴-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
    <version>1.4.5.RELEASE</version>
</dependency>

第三步:添加注解

在項目入口類上添加@EnableFeignClients注解表示開啟Spring Cloud Feign的支持功能;

第四步聲明服務(wù)

定義一個HelloService接口,通過@FeignClient注解來指定服務(wù)名稱,進(jìn)而綁定服務(wù),然后再通過SpringMVC中提供的注解來綁定服務(wù)提供者提供的接口,如下:

@FeignClient("01-springcloud-service-provider")
public interface HelloService {
    @RequestMapping("/service/hello")
    public String hello();
}

這相當(dāng)于綁定了一個名叫01-springcloud-service-provider (這里01-springcloud-service-provider大小寫01-SPRINGCLOUD-SERVICE-PROVIDER都可以 ) 的服務(wù)提供者提供的/service/hello接口;

我們服務(wù)提供者提供的接口如下:

@GetMapping("/service/hello")
public String hello() {
    System.out.println("服務(wù)提供者1。。。。。。。");
    return "Hello, Spring Cloud,Provider 1";
}

第五步使用Controller中調(diào)用服務(wù)

接著來創(chuàng)建一個Controller來調(diào)用上面的服務(wù),如下:

@RestController
public class FeignController {
    @Autowired
    HelloService helloService;
    @RequestMapping("/web/hello")
    public String hello() {
        return helloService.hello();
    }
}

第六步:屬性配置

在application.properties中指定服務(wù)注冊中心、端口號等信息,如下:

server.port=8082
#配置服務(wù)的名稱
spring.application.name=05-springcloud-service-feign
#配置eureka注冊中心地址
eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka/,http://eureka8762:8762/eureka/

第七步測試

依次啟動注冊中心、服務(wù)提供者和feign實現(xiàn)服務(wù)消費者,然后訪問如下地址:http://localhost:8082/web/hello。

使用Feign實現(xiàn)消費者的測試

之前我們?yōu)榱撕喕疪estTemplate操作,將之封裝在一個BookService中,但同時我們也發(fā)現(xiàn)BookService中的方法幾乎都是模板式的,寫起來很枯燥,Spring Cloud Feign對此進(jìn)行了進(jìn)一步的封裝,簡化了我們的封裝操作。

Feign的基本使用,在HelloService類中聲明接口時,我們發(fā)現(xiàn)這里的代碼可以直接從服務(wù)提供者的Controller中復(fù)制過來,這些可以復(fù)制的代碼Spring Cloud Feign對它進(jìn)行了進(jìn)一步的抽象,這里就用到了Feign的繼承特性,F(xiàn)eign繼承特性的方便之處了,這種方式用起來確實很方面,但是也帶來一個問題,就是服務(wù)提供者和服務(wù)消費者的耦合度太高,此時如果服務(wù)提供者修改了一個接口的定義,服務(wù)消費者可能也得跟著變化,進(jìn)而帶來很多未知的工作量,因此小伙伴們在使用繼承特性的時候,要慎重考慮。

全部教程
主站蜘蛛池模板: 欧美精品v欧洲高清 | 久久久久国产精品 | 在线免费观看a视频 | 四虎影视最新网站在线播放 | 精品玖玖玖视频在线观看 | 2020年国产高中毛片在线视频 | 精品视频中文字幕 | 涩涩免费视频 | 国产成人a∨麻豆精品 | 毛片不卡一区二区三区 | 中文字幕欧美日韩一 | 99re6这里有精品热视频在线 | 91精品久久久 | 一区二区中文字幕在线观看 | 国产天天操 | 日本xxxwww在线观看免费 | 外国一级黄色毛片 | 久久羞羞视频 | 女人色毛片女人色毛片中国 | 精品无人区乱码一区二区三区手机 | 九九手机视频 | www欧美| 欧美成人久久一级c片免费 欧美成人剧情中文字幕 | 亚洲九九色| 久久伦理影院 | 欧美最猛的24k毛片视频 | www久久精品 | 久久99精品久久久久久野外 | 97精品视频 | 久草在线首页 | 亚洲在线免费 | 亚洲精品一二三四区 | 在线日韩国产 | 欧美高清理论片在线观看 | 亚洲一级成人 | 免费a级毛片大学生免费观看 | 国产精品免费大片一区二区 | 婷婷尹人香蕉久久天堂 | 天天摸天天碰色综合网 | 国产精品麻豆一区二区 | 久久免费国产 |