文章目錄
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就好了!