
正文
微服务 通过EnableFeignClients调用其他服务的api
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
今天在项目上遇到一个问题,通过当前service服务要调用到其他service服务的api接口时,可通过EnableFeignClients调用其他服务的api,大概的步骤如下:
1、在springboot的main处加上注解@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class MyServiceApplication { public static void main(String[] args){
SpringApplication.run(MyServiceApplication.class, args);
} }
2、在service层上实现接口,这里注意value可以用serviceId代替,但是最好用value来指定要调用的服务。
fallback是当程序错误的时候来回调的方法
方法中要用@PathVariable要注解参数
@FeignClient(value = "other-service", fallback = ExampleFeignClientFallback.class)
public interface ExampleFeignClient {
@RequestMapping(value = "/v1/exampleId/{id}",method = RequestMethod.GET)
Long queryById(@PathVariable(name="id") Long id);
}
3、编写程序错误时的回调类,实现接口,在错误时回调
@Service
public class ExampleFeignClientFallback implements ExampleFeignClient {
@Override
public Long queryById(Long id) {
return null;
}
}
4、调用该服务
//声明,自动封装
@Autowired
private ExampleFeignClient ExampleFeignClient; //调用
Long result = ExampleFeignClient.queryById(id);
至此,完成整个步骤






