spring cloud @FeignClient使用
<一> :注解 @FeignClient(value = “whhim-wms”, contextId = “DeliveryOrderClient”)
作用:使用Spring Cloud搭建各种微服务之后,服务可以通过@FeignClient使用和发现服务场中的其他服务
注解 @FeignClient介绍:
1)name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现 value 同name 2): contextId:当name相同时,存在冲突,此时可以通过contextId来处理。
<二> spring cloud 调用与被调用的一个实例 服务提供者
//name为服务提供者向注册中心注册的实例名 @FeignClient(name = "provider-service" ) public interface HelloFeignService { //地址为服务提供者对外暴露的地址 @RequestMapping(value = "/hello" , method = RequestMethod.GET) String hello(@RequestParam("name") String name); }
调用服务提供者
@RestController public class IndexController { @Autowired private HelloFeignService feignService; @RequestMapping(value = "/hello" , method = RequestMethod.GET) public String hello(String name){ return feignService.hello(name); } }
启动上述两个i项目,访问 http://localhost:9700/hello?name=zy , 例二:
@FeignClient(value = "im-wms", contextId = "DeliveryOrderClient") public interface DeliveryOrderClient { @RequestMapping(value = "/im-wms/delivery-order-client/modifyTranPlan", method = RequestMethod.POST) RestResult<Boolean> modifyTranPlan(@RequestBody ModifyTranPlanRequest modifyTranPlanRequest); } //当注入DeliveryOrderClient,调用其modifyTranPlan方法则会走/im-wms/delivery-order-client/modifyTranPlan,此时在controller中书写此接口的service方法完成业务即可
<三>:在不知道@Autowired private HelloFeignService feignService的情况下,可以通过接口名来获取,如下:
public interface FicoClient { @RequestMapping(value = "/im-fico/co/getCompanyCostList",method = RequestMethod.POST) RestResult<CompanyCostDto> getCompanyCostList(@RequestBody String companyCode); }
当注入FicoClient,调用其方法ficoClient.getCompanyCostList,则访问"/im-fico/co/getCompanyCostList"此接口,得到返回数据
上一篇:
IDEA上Java项目控制台中文乱码