spring could環境搭建 整理 基礎版
一、創建父項目
創建一個maven 項目,刪掉src 文件夾
二、創建 服務項目
需要做的配置
1)加上對應的註解
2)yml配置
- server 端口號
- eureka 配置
- 兩個false register 和fetch
3)優先啓動這個項目,讓其他的服務來註冊
三、創建 一個提供者項目(module)
創建的時候加入對應的依賴
1)yml配置
- 配置對應的 application 名稱
- 配置數據庫
- 配置mybatis
- 配置 eureka
2)代碼結構
還在正常的 entity,mapper接口,service ,controller,xml
四、創建消費者項目(module)
1)yml 配置
- 端口號
- application name
- eureka配置
2)消費者的代碼結構
- service接口
- service接口實現類
- feign 接口
- feign 接口的實現類(如果需要熔斷之後的默認數據的話) 在 service接口實現類中調用 feign 接口
以上就完成了一個基本的spring could 的提供者消費者的配置
但是此刻開始,需要注意的 是各種參數的傳遞問題,筆者這個環節比較頭大
參數的傳遞主要有兩個環節
1)前端傳參數給 消費者的 controller
2)消費者調用feign 接口,傳參給 provider
遇到過的問題
1)controller 接收一個實體類對象,對象爲null
2)controller 接收一個實體類對象,對象接收正常,但是 傳遞到feign 接口裏面的時候,傳遞到provider 裏面就不正常
可能的原因
註解使用不當
要麼從 provider 到controller 全部不要使用註解(不要加@RequestParam,也不要加 @RequestBody),直接寫對象
要麼從 provider 到controller 全部使用註解@RequestParam,全部添加 @RequestParam,此時的參數使用 Map 接收,不要使用自定義的實體類對象
接收對象的時候全部使用 @RequestBody,但是需要指明 products
@PostMapping(value = “/addNewComment”,produces = {“application/json;charset=UTF-8”})
public ReturnUtil addNewComment(@RequestBody Comment comment){
。。。
}
這個方法需要前端做配合,需要前端傳遞過來是 json數據纔可以
直接使用postman測試接口的時候
使用post方式,參數以json 的形式寫在 body中
3)各種忘加必要的註解
消費者需要加註解
- 啓動類上,使用了feign 接口需要加 @EnableEurekaClient @EnableFeignClients 消費者的
feign 接口 需要加下面的註解,來指定 提供者,這裏就要求需要配置提供者的application name,需要保持一致,指定是哪一個
提供者 @FeignClient(value = “couldprovider”) - 如果需要熔斷之後,啓動默認的數據,調用默認的接口,需要添加fallback,指定feign接口的實現類即可,正常情況是請求provider的方法,熔斷之後,會調用
feign 接口的實現類裏面的方法 @FeignClient(value = “couldprovider”,fallback =
FeignPhoneServiceImpl.class)
提供者
- @EnableEurekaClient
註冊中心需要加
- @EnableEurekaServer
4)注意 提供者方法的返回值類型
犯過一個錯誤,提供者的返回值類型是自定義的一個 ReturnUtil,裏面封裝了一個list
然後在消費者以爲返回的是一個list類型,結果當然是調不通的