美文网首页
12.基于fegin实现服务调用

12.基于fegin实现服务调用

作者: LANSHENGYANG | 来源:发表于2020-05-26 18:10 被阅读0次

    基于Feign实现服务调用

    什么是Feign

    • Feign是Spring Cloud提供的一个声明式的伪http客户端,它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。
    • Nacos很好得兼容了Feign,Feign默认集成了Ribbon,所以在Nacos下使用Feign默认就是实现了负载均衡得效果。

    Feign使用

    • 1.加入依赖
    <!--Feign依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    
    • 2.在主类上添加Feign得注解
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients //开启feign
    public class ShopOrderApplication {}
    
    • 3.创建一个service,并使用Feign实现微服务调用
    @FeignClient(value = "service-product")
    public interface ProductService {
    
        /* @FeignClient的value + @RequestMapping的value值,其实就是一个完整的请求地址
         * http://service-product/product/{pid}
         */
        @RequestMapping("/product/{pid}")
        Product findByPid(@PathVariable("pid") Integer pid);
    }
    
    • 4.修改controller代码,并启动验证
    /**
     * feign实现服务调用
     * @param pid
     * @return
     */
    public Order order(@PathVariable("pid") Integer pid) {
        log.info("接收到{}号商品的下单请求,接下来调用商品微服务查询此商品信息", pid);
    
        Product product = productService.findByPid(pid);
        log.info("查询到{}号商品的信息,内容是:{}", pid, JSON.toJSONString(product));
    
        //下单(创建订单)
        Order order = new Order();
        order.setUid(1);
        order.setUsername("测试用户");
        order.setPid(pid);
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());
        order.setNumber(1);
    
        orderService.createOrder(order);
        log.info("创建订单成功,订单信息为{}", JSON.toJSONString(order));
        return order;
    }
    

    相关文章

      网友评论

          本文标题:12.基于fegin实现服务调用

          本文链接:https://www.haomeiwen.com/subject/uibvahtx.html