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 ,
spring cloud @FeignClient使用_第1张图片
例二:

@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"此接口,得到返回数据

你可能感兴趣的:(spring,cloud,spring,java)