服務調用 註冊服務內部調用 方法之二 feign

order服務調用goods服務

版本的特別聲明

springcloud迭代比較快,版本很多,用到這個feign組件的時候,報了很多classNotFound錯誤,都是spring組件版本衝突引起的,所以我被迫統一升級我項目裏的springboot版本(2.0.0.M3 ------>2.0.6.RELEASE)和spingcloud版本(Finchley.SR2------->Finchley.RELEASE),之前文件里加的資源倉庫可以 刪掉了,可能你們在看這篇文章的時候,這個版本早過了,可以在這裏查看版本對應關係 (這個對應關係也不一定一點問題沒有,慢慢填坑)https://spring.io/projects/spring-cloud
在這裏插入圖片描述
eureka,goods,order項目:
在這裏插入圖片描述
其中goods和order項目還必須加上依賴,不然項目根本啓動不了:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>

1.服務提供方goods的改造

1.1 goods拆分成多模塊

在這裏插入圖片描述
goods服務對外的接口統一放在client裏面管理,common放了一些goods和其它服務都用得着的對象,server裏寫主要代碼邏輯

1.2 依賴

goods-server.pom 添加goods-common
在這裏插入圖片描述
goods-client.pom裏添加goods-common和feign
在這裏插入圖片描述

1.3 接口準備

controller寫在server模塊裏:
在這裏插入圖片描述
SizeOutput對象寫在common裏,方便client使用它
在這裏插入圖片描述

1.4 定義Feign client

在client模塊裏,寫interface GoodsClient,不用實現, @GetMapping(value = “size/getSizes”) 對應的是剛纔的controller訪問路徑
在這裏插入圖片描述

1.5 maven install

install 整個goods項目:mvn -Dserver.test.skip=true -U clean install ,這樣其它項目才能引用到 goods-client模塊
在這裏插入圖片描述

1.6 啓動goods項目

http://localhost:8081/size/getSizes
在這裏插入圖片描述

2 order服務的改造

2.1 拆分成多模塊

同樣拆成三個模塊
在這裏插入圖片描述
三個模塊和goods三模塊同樣的分工。我們在server裏調用goods裏的 /size/getSizes

2.2 添加依賴

order-server.pom裏添加feign和goods-client

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <!--<version>2.0.0.M1</version>-->
        </dependency>
        <dependency>
            <groupId>com.zc</groupId>
            <artifactId>goods-client</artifactId>
        </dependency>

2.3 啓動類加上註解@EnableFeignClients

包名是 goods-client 裏的
在這裏插入圖片描述

2.4 使用goodsClient接口

自動注入,紅線報錯只是因爲idea不能分辨而已,不影響功能,就是看起來很難受而已
在這裏插入圖片描述

2.5 啓動order,驗證結果

http://localhost:8082/feign/getFromGoods order服務已經成功通過feign獲取了goods的提供的數據
在這裏插入圖片描述
在這裏插入圖片描述

3.可能碰到的問題

啓動order服務報錯:Either ‘name’ or ‘value’ must be provided in @FeignClient

啓動order服務的時候報了這個錯誤,原因是goods端的@FeignClient註解沒寫好
在這裏插入圖片描述
加上這個:
在這裏插入圖片描述
重新打包goods,再啓動order就好了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章