RPC接口实现_一个接口多个实现

RPC接口实现_一个接口多个实现1.RPC作用以目前的认识,RPC的作用:多个工程之间数据传输。2.逐步完成RPC接口实现第一步:编写thrift文件,语法格式和java不同。在布局分层里安排在了client层

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1.RPC作用

以目前的认识,RPC的作用:多个工程之间数据传输。

 

2.逐步完成RPC接口实现

 

第一步:

编写thrift文件,语法格式和java不同。

在布局分层里安排在了client层

include "base.thrift"
namespace java com.***.***.***.***.***.student

/**
 * 学生信息实体
 **/
struct StudentInfo {
    // id
    1: i64 Id,

    // 学生编码
    2: string RuleNo,

    // 学生名称
    3: string RuleName,

    // 学生类型 
    4: i32 RuleType,
}

/**
  *  班级信息
  **/
struct StudentClassVO{

    //  班级ID
    1: i64 Id,

    //  班级编码
    2: string StudentClassNo,

    //  班级名称
    3: string StudentClassName,

}


/**
 * 学生信息查询请求
 **/
 struct StudentInfoQueryRequest{

    // 学生编码
    1: string StudentNo,

    255: optional base.Base Base,
 }

/**
 * 学生信息查询响应
 **/
 struct StudentInfoQueryResponse{

    // 学生信息(唯一)
    1: StudentInfo studentInfo,

    255: base.BaseResp BaseResp,

 }


其中  struct StudentInfoQueryRequest 和  struct StudentInfoQueryResponse 是请求方法。

然后在thrift总文件中添加相关方法声明

/**
    * 根据StudentNo获取学生信息
    **/
    student_rule.StudentInfoQueryResponsequeryAllocRule(1:student_info.StudentInfoQueryRequest req),

这样,thrift就算是写好了。

 

第二步:校验并编译thrift

第一次写thrift可能会有语法错误,比如忘记加逗号或者冒号是中文的,

可以用这种方法校验

(1)点击总thrift文件右键 copy path -> absolute path

  (2)  terminal里敲: thrift –gen java [这里添加thrift的绝对路径]

可以提示哪一行有语法错误。

 

然后到打开右侧Maven,在client包的Lifecycle中install就可以生成jar包里了。

 

第三步:实现方法接口

找到studentMapper,

自动生成一个方法:selectStudentByStudentNo

然后到Service层,StudentManager中写一下方法:

/**
     * 根据 studentNo 查询学生信息
     *
     * @param studentNo 学生编码
     */
    public Optional<StudentInfoVO> queryStudentInfoByStudentNo(String StudentNo){
        
        StudentInfo studentInfo =  StudentMapper.selectStudentByStudentNo(StudentNo);
       

        return Optional.ofNullable(BeanCopyUtil.copyToTargetClass(studentInfo,StudentInfoVO.class));
    }

这里BeanCopyUtil是一个对象属性复制方法,以后会更新一下,可以理解为把两个对象名称一样的属性直接进行自动赋值。

这样接口就写好了,然后在web层调用一下。

 

第四步:调用接口

在web层里建立一个thriftServiceImpl的类(java)

先添加manager

    @Override
    @AutoLog("[rpc]")
    public StudentInfoQueryResponse studentInfoRule(StudentInfoQueryRequest req)throws TException{

        StudentInfoQueryResponse response = new StudentInfoQueryResponse();
        response.setBaseResp(new BaseResp());


        StudentInfoVO studentInfoVO = StudentInfoManager.queryStudentInfoByShopNo(req.StudentNo).orElse(null);
        response.setStudentInfo(BeanCopyUtil.copyToTargetClass(StudentInfoVO,StudentInfo.class));

        return response;
    }

这样就可以在另外一个工程里访问student的属性方法了。

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182280.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微商分销代理商城源码带代理等级和升级条件 thinkphp框架「建议收藏」

    微商分销代理商城源码带代理等级和升级条件 thinkphp框架「建议收藏」  介绍:微商分销代理商城源码基于think框架开发是一款微商分销代理商城源码,可以自己设置代理等级和升级条件(如购买指定商品、消费额度)网站搭建方式介绍:测试环境php7.0+mysql5.6数据库配置文件applicationdatabase.php后台/admin用户:admin密码:123456下载链接:thinkphp框架微商分销代理商城源码-代理等级和升级条件…

    2022年5月17日
    44
  • era教程_erdas2015使用教程

    era教程_erdas2015使用教程SpringCloudEureka配置文件详解本篇内容用来说明Eureka常用配置的含义。以下配置都是以eureka.server开头:参数 描述 备注 eureka.server.eviction-interval-timer-in-ms server清理无效节点的时间间隔 默认60秒 eureka.server.enable-self-preservation 是否开启自我保护,默认true truefalse eureka.ser..

    2022年8月21日
    5
  • c++实现strstr函数_C语言字符串数组

    c++实现strstr函数_C语言字符串数组自己实现C语言中的strstr函数,采用字符一个一个进行匹配,如果不等,则从下一个位置进行匹配。/*strstr实现*/char*mystrstr(constchar*dest,constchar*src){char*tdest=dest;char*tsrc=src;while(*tdest){char*flag=tdest;//设置标志位,方便回滚。while…

    2022年10月13日
    0
  • preparedStatement介绍

    preparedStatement介绍PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还

    2022年6月11日
    46
  • webpack图片压缩_webpack的cdn

    webpack图片压缩_webpack的cdn图片处理url-loader(webpack5之前的处理方式)在项目开发中,我们时长会需要使用到图片,比如在img文件夹中有图片test1.png,然后在normal.css中会引用到图片body

    2022年7月30日
    3
  • Silverlight网站“运行后一片空白”的解决方案[通俗易懂]

    Silverlight网站“运行后一片空白”的解决方案[通俗易懂]     我近日在一次项目中,使用了ESRI的SilverlightAPI进行了开发。结果在进行网站部署时遇到了“运行后一片空白”的问题。现将解决办法如下:     如果您想在IIS服务器上使用Silverlight程序,需要使用xap、XAML文件类型,所以必须在IIS中注册xaml和xap的MIME文件类型。 打开IIS->站点属性->HTTP头->MIME类型->新建:

    2022年10月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号