
前言假設我們當前有兩個服務服務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);}}效果