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