Spring cloud服务间调用

前言

      Spring cloud服务间调用的方式有两种:RestTemplate和FeignClient。不管是什么方式,都是通过Rest接口调用服务的http接口,参数和结果默认都是通过Jackson序列化和反序列化。因为Spring MVC的RestController定义的接口,返回的数据都是通过Jackson序列化成json数据。
  目前接触的Spring cloud还是很浅显,先简单介绍一下学习到的通过feign实现Spring cloud调用的方法。

feign实现服务间调用

      
举个栗子:被调用的服务为kernel,调用的服务为zentao
      
1、创建api模块
      需要在kernel服务创建一个integral-kernel-api的模块,如图:
这里写图片描述

 模块中包括facade和model
facade是暴露给需要调用服务的接口,model里面存放的是需要用到的实体数据(注意这里的实体数据不要和自己服务的实体完全一样,因为这些实体也是可以暴露给别人的,所以要注意安全性)

      
2、integral-kernel-api中配置接口方法

@FeignClient(value = "INTEGRAL-KERNEL-PROVIDER", path = "/kernel-web")
public interface IntegralClientService {

    @PostMapping(value = {"/integral/addIntegral"})
    IntegralResult<IntegralModel> addIntegral(@RequestBody IntegralModel model);
}

      代码解释:
这里写图片描述

      
3、将api推送到私服上
      使用maven命令或者是按照如图操作均可,原理是相同的
这里写图片描述

      
4、调用服务引入坐标
      需要在zentao的provider的pom.xml文件中引用相应的坐标

<dependency>
            <artifactId>integral-kernel-api</artifactId>
            <groupId>com.dmsdbj.cloud</groupId>
            <version>0.0.1-SNAPSHOT</version>
</dependency>

      当把api的jar包推送到私服上之后,kernel的api方法就可以以jar包的形式让zentao引入了并且使用了。
      
5、调用服务添加包扫描
      需要在zentao的启动类上加上扫描包的注解如下:
/调用其他服务包扫描
@EnableFeignClients(basePackages = {"com.dmsdbj.integral.kernel.api"})

   添加上包扫描的方法之后,zentao启动的时候就可以扫描并且访问到kernel的代码,所以需要的时候就可以调用kernel的方法了

      
6、使用kernel的方法
       在需要调用其他服务的类的service实现类先声明接口
@Resource
private IntegralClientService integralClientService;

在需要用的地方直接使用即可:
ntegralResult<IntegralModel> result = integralClientService.addIntegral(item);

总结

       这样使用feign进行服务间的调用就完成啦!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值