zoukankan      html  css  js  c++  java
  • 9-15 Feign继承特性实现及开发技巧

    首先把Feign的依赖加上
    上面两个已经是公用的,我们只需要复制下面的两个即可



    引入Utils模块。我们之前在common模块引入的,这里复制一下即可


    开始实现

    由于这里是公共的模块引用,所以可以有film可以有cinema这些模块的对应的包,只要你服务和服务之间需要调用的通过Feign,都可以放在这里面。对外做暴露。第二是所有的服务需要调用的时候 ,只需要引入backend-api的模块即可。



    我们的接口是什么样的,feign的接口就可以直接复制。例如这里的根据filmId查询,我们直接复制下面代码



    接口里面不需要public 去掉前面的修饰符

    这样我们的接口就已经对外暴露了出去。
    BaseResponseVO是针对我们每一个服务,大家的服务都一样,这时候你去解析BaseResponseVO可以获取到里面所有的结果,然后拿着这个结果去拼装。这是java典型对象的应用,当然如果你对外暴露的是一个通用的服务,而不是这种个性化的服务,

    那么你就可以对外暴露String,暴露他呢。就是告诉别人我们返回的都是一个json的字符串,那这个字符串里面,你们就需要去写接口文档,明确标识出来我的入参是什么,出参是什么,各项参数的含义等等。因为我们这次是一个团队的合作,只有模块和模块的交互,

    所以一般来讲,我们这里就是暴露BaseResponseVO

    甚至更夸张一点,我们连泛型都写上,这样当你去取结果的时候,你只需要在film里面把结果对应的内容直接执行出来就是我们的目标了。

    这是我们原来的解析,就比较low了。解析出来的就是一个JsonObject

    然后紧接着去解析里面的内容,我们做了大量的json解析的工作,而这个东西如果变成一个对象,那对于我们来说就会变的简单很多,

    那么我们要解析什么对象呢?我们这里我们返回的是DescribeFilmRespVO

    复制

    复制到我们公共服务的film的vo目录下

    这样我们就可以指定返回的类型了。

    java里面所有的类都是以为package+类名作为唯一标识的

    所以我们以前的调用就不行了,整条的链路都要改。改起来可能会有麻烦些。


    删除film门模块下的DescribeFilmRespVO

    那么这里就会报错

    我们重新引下包

    接口内也需要引入


    还有我们的实现类



    xml内也需要修改:com.mooc.meetingfilm.apis.film.vo.DescribeFilmRespVO


    hall服务

    创建apis包,专门存对外暴露的接口 

    创建接口:FilmFeignApi



    具体的实现我们就不用再写了,因为在接口这里就已经写完了。@RequestMapping啊,@PathVariable都是可以被继承下来的,

    所以这里只需要加一个@FeignClient就可以了,之所以写@FeignClient是因为它打包的时候需要生成它的子目录。没有这个注解,它是生成不了的。

    name的值就是film-service 这样我们该写的就都写完了,其他的什么都不需要管,

    film服务内,开启Feign的支持

    同理我们的hall服务也是需要开启

    所以绝大数的配置都是在我们的业务系统里面去写。因为它是jar包引进来的。
    下面就来看两个服务之间具体怎么互相调用的实现。

    结束

  • 相关阅读:
    gdb调试core文件
    设计模式之工厂模式
    设计模式之简单工厂模式
    正确理解python的装饰器
    深入理解MVC架构
    django的模板系统过滤器笔记
    python net-snmp 的使用
    用django写个CMS系统
    django的CMS系统(内容管理系统)
    RESTful 的通俗解释
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12853227.html
Copyright © 2011-2022 走看看