Feign实现服务调用

  1. 客户端通过@EnableFeignClients开启Feign的支持功能
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
@RestController
public class TestApplication {
	public static void main(String[] args) {
		SpringApplication.run(TestApplication.class, args);
	}
}
  1. 去对应的服务(product-service)下创建内部调用接口。
//对内部服务暴露的接口(返回数据就行)
@PostMapping("/insideUpdateProduct")
public Integer insideUpdateProduct(@RequestBody ProductInfo productInfo){
    System.out.println(productInfo);
    ProductForm productForm = new ProductForm();
    BeanUtils.copyProperties(productInfo,productForm);

    return productService.updateProduct(productForm).getStatus();
}
  1. 定义接口
    在order-service服务中通过@FeignClient(“product-service”) 注解指定服务名来绑定服务
    注:product-service与对应服务的yml文件中spring: application: name:后面名称一致。
    再使用SpringMVC的注解@RequestMapping来绑定具体该服务提供的rest接口
@FeignClient(value = "product-service")
public interface OrderFeignClient {

    //以抽象方法的形式表示调用
    //feign底层会自动转化对象类型
    //使用requestMapping注解来表示你要调用那个请求
    @RequestMapping(value = "/shop-product/insideUpdateProduct",method = RequestMethod.POST)
    Integer updateProduct(@RequestBody ProductInfo productInfo);
}
  1. 在order-service服务里的业务层调用即可
@RequestMapping(value = "/shop-product/insideUpdateProduct",method = RequestMethod.POST)
    Integer updateProduct(@RequestBody ProductInfo productInfo);
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐