【SpringCloud】SpringCloud之Feign服务调用示例
前言假设我们当前有两个服务服务A服务B实现效果服务B关联绑定服务A的API能够远程调用以下提供个Demo以供参考服务A因为服务A是被调方故只需有接口就可以了。packagecom.xiaobai.feign.controller;importorg.springframework.web.bind.annotation.*;/** * Author xiaobai * Date 2023/6/8 15:08 * Title: HelloController * Package com.xiaobai.feign.controller * description: 生产者服务 接口 * */RestControllerRequestMapping(/hello)publicclassHelloController{GetMapping(/test)publicStringtestNoParam(){returnhello feign;}GetMapping(/test/{param})publicStringtestParam(PathVariableStringparam){returnhello feign, say param;}}服务B启动类添加注解EnableFeignClients以开启 Feign 功能。packagecom.xiaobai;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.openfeign.EnableFeignClients;/** * Author xiaobai * Date 2023/6/8 15:08 * Title: BStartApp * Package com.xiaobai * description: 启动类 * */EnableFeignClients//加这个注解SpringBootApplicationpublicclassBStartApp{publicstaticvoidmain(String[]args){SpringApplication.run(BStartApp.class,args);}}绑定远程服务packagecom.xiaobai.fegin;importorg.springframework.cloud.openfeign.FeignClient;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;/** * Author xiaobai * Date 2023/6/8 15:14 * Title: HelloFeignService * Package com.xiaobai.fegin * description: 消费者服务 feign接口实现类 * ######### * 这个类是重点哦 * 其实这个类相当于就是代理了服务A的接口所以请求方式、返回值、函数名、所携带的参数等都得统一并且映射的url路径得写调用接口的全路径。 */FeignClient(nameservice-a)//被调服务名publicinterfaceHelloFeignService{GetMapping(/service-a/hello/test)StringtestNoParam();/** * 映射的url这里路径得写调用接口的全路径 * return */GetMapping(/service-a/hello/test/{param})StringtestParam(PathVariableStringparam);}消费者接口packagecom.xiaobai.fegin.controller;importcom.xiaobai.fegin.HelloFeignService;importorg.springframework.web.bind.annotation.*;importjavax.annotation.Resource;/** * Author xiaobai * Date 2023/6/8 15:11 * Title: HelloFeignController * Package com.xiaobai.fegin.controller * description: 消费者服务 接口 */RestControllerRequestMapping(/hello)publicclassHelloFeignController{ResourceprivateHelloFeignServicehelloFeignService;GetMapping(/test)publicStringtestNoParam(){returnhelloFeignService.testNoParam();}GetMapping(/test/{param})publicStringtestParam(PathVariableStringparam){returnhelloFeignService.testParam(param);}}效果