javascript
Spring Cloud Alibaba - 13 OpenFeign应用篇
文章目錄
- What's Feign
- ( Ribbon+RestTemplate) Vs Feign
- Feign整合
- artisan-feign-api 子模塊構建
- Step1 搞依賴
- Step2 修改打包方式
- Step3 編寫聲明式接口
- 調用工程 artisan-cloud-feign-order 構建
- Step1 搞依賴
- Step2 搞注解
- Step3 搞調用 (像調用本地方式一樣調用遠程服務)
- 服務提供方artisan-cloud-feign-product 構建
- 測試
- 源碼
What’s Feign
Feign是Netflix開發的聲明式、模板化的HTTP客戶端,其靈感來自Retrofit、JAXRS-2.0以及WebSocket。
Feign可幫助我們更加便捷、優雅地調用HTTP API.
在Spring Cloud中,使用Feign非常簡單——只需創建接口,并在接口上添加注解即可。
Feign支持多種注解,例如Feign自帶的注解或者JAX-RS注解等。Spring Cloud對Feign進行了增強,使其支持SpringMVC注解.
另外還整合了Ribbon和Eureka,從而使得Feign的使用更加方便.
( Ribbon+RestTemplate) Vs Feign
前面的方式我們都是通過 Ribbon+RestTemplate 進行微服務調用 模式 , 那有什么弊端呢?
ResponseEntity<PayInfo> responseEntity = restTemplate.getForEntity(PAY_URI + orderInfo.getProductNo(), PayInfo.class);#Ribbon調用@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}兩個缺點:
如果構建的URL非常復雜,傳遞參數是個問題。
同時當業務比較復雜,很難理解。
Feign整合
artisan-feign-api 子模塊構建
采取開發中常用的套路 定義一個artisan-feign-api工程 ,用于單獨管理和其他服務的接口。類似于DAO, COMMON這種模塊
Step1 搞依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>Step2 修改打包方式
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId></plugin></plugins></build>該工程式一個普通的jar 不需要打可執行的jar
Step3 編寫聲明式接口
@FeignClient(name = "artisan-product-center") public interface ProductCenterFeignApi {/*** 聲明式接口,遠程調用http://artisan-product-center/selectProductInfoById/{productNo}* @param productNo* @return*/@RequestMapping("/selectProductInfoById/{productNo}")ProductInfo selectProductInfoById(@PathVariable("productNo") String productNo);}這個聲明式接口怎么寫呢? --------- 直接把Controller接口 Copy過來即可。
調用工程 artisan-cloud-feign-order 構建
Step1 搞依賴
<dependency><groupId>com.artisan</groupId><artifactId>artisan-feign-api</artifactId><version>1.0-SNAPSHOT</version></dependency>引入剛才的子模塊,因為依賴是傳遞的,所以也相當于引用了feign ,這里僅引用子模塊即可。
Step2 搞注解
開啟注解加入 @EnableFeignClients
Step3 搞調用 (像調用本地方式一樣調用遠程服務)
服務提供方artisan-cloud-feign-product 構建
同普通工程一樣,無需改造
測試
啟動兩個服務
artisan-cloud-feign-order
artisan-cloud-feign-product
訪問Order服務提供的接口
源碼
https://github.com/yangshangwei/SpringCloudAlibabMaster
總結
以上是生活随笔為你收集整理的Spring Cloud Alibaba - 13 OpenFeign应用篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud Alibaba
- 下一篇: Spring Cloud Alibaba