網站維護具體怎么做呀合肥seo排名收費
使用起因
之前我們利用了Nacos實現了服務的治理,利用RestTemplate實現了服務的遠程調用。這樣一來購物車雖然通過遠程調用實現了調用商品服務的方法,但是遠程調用的代碼太復雜了:
解決方法
并且這種調用方式比較復雜,一會兒遠程調用,一會兒本地調用。
因此,我們改變并優(yōu)化遠程調用的代碼,讓遠程調用像本地方法調用一樣簡單。而這就要用到OpenFeign組件了。
其實遠程調用的關鍵點就在于四個:
請求方式
請求路徑
請求參數
返回值類型
所以我們使用OpenFeign只需要利用SpringMVC的相關注解來聲明上述4個參數,然后OpenFeign基于動態(tài)代理幫我們生成遠程調用的代碼,我們就不用在寫那繁瑣的代碼了,直接調用它幫我們生成的代碼就行了,非常方便
快速上手
1.導入依賴
<!--openFeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--負載均衡器--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
2.啟用OpenFeign
在cart-service的CartApplication啟動類上添加注解,表示開啟OpenFeign功能
3.編寫OpenFeign客戶端
代碼如下:
package com.hmall.api.client;import com.hmall.api.dto.ItemDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;import java.util.Collection;
import java.util.List;// 遠程調用商品服務
@FeignClient(name = "item-service")
public interface ItemClient {@GetMapping("/items")List<ItemDTO> queryItemsByIds(@RequestParam("ids") Collection<Long> ids);
}
這里只需要聲明接口,不用實現方法。接口中的注解解釋:
@FeignClient("item-service"):聲明服務名稱
@GetMapping("/items"):聲明請求路徑
@RequestParam("ids") Collection<Long> ids:聲明請求參數
List<ItemDTO>:返回值類型
有了上面接口后,我們只需要調用這個方法,就可以實現遠程調用了
4.使用FeignClient
最后我們在cart-service的CartServiceImpl中修改代碼,直接調用ItemClient的方法即可:
OpenFeign替我們完成了服務拉取、負載均衡、發(fā)送http請求的所有工作
而且,這里我們不再需要RestTemplate了,還省去了RestTemplate的注冊