springcloud-的使用alibaba版------基于Feign实现服务调用

什么是Feign?

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

Feign的使用

1.shop-order加入Fegin的依赖
<!--fegin组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2在主类上添加Fegin的注解
@SpringBootApplication 
@EnableDiscoveryClient 
@EnableFeignClients//开启Fegin 
public class OrderApplication {}
3创建一个service, 并使用Fegin实现微服务调用
package com.bigdata.service;
@FeignClient("service-product")
//声明调用的提供者的name 
public interface ProductService {
//指定调用提供者的哪个方法
//@FeignClient+@GetMapping	就是一个完整的请求路径 http://service- product/product/{pid}
@GetMapping(value = "/product/{pid}")
Product findByPid(@PathVariable("pid") Integer pid);
4修改controller代码,并启动验证
@RestController @Slf4j
public class OrderController { @Autowired
private OrderService orderService;


@Autowired
private ProductService productService;
//准备买1件商品
@GetMapping("/order/prod/{pid}")
public Order order(@PathVariable("pid") Integer pid) { log.info(">>客户下单,这时候要调用商品微服务查询商品信息");
//通过fegin调用商品微服务
Product product = productService.findByPid(pid);
log.info(">>商品信息,查询结果:" + JSON.toJSONString(product));
Order order = new Order(); order.setUid(1);
order.setUsername("测试用户");
order.setPid(product.getPid()); order.setPname(product.getPname()); order.setPprice(product.getPprice()); order.setNumber(1);
orderService.createOrder(order);
return order;
}
}
5重启order微服务,查看效果

http://localhost:8091/order/prod/1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值