前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RPC接口实现_一个接口多个实现

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

作者头像
全栈程序员站长
发布2022-11-04 10:09:07
5610
发布2022-11-04 10:09:07
举报
文章被收录于专栏:全栈程序员必看

1.RPC作用

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

2.逐步完成RPC接口实现

第一步:

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

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

代码语言:javascript
复制
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总文件中添加相关方法声明

代码语言:javascript
复制
/**
    * 根据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中写一下方法:

代码语言:javascript
复制
/**
     * 根据 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

代码语言:javascript
复制
    @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.cn/182280.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.RPC作用
  • 2.逐步完成RPC接口实现
    • 第一步:
      • 第二步:校验并编译thrift
        • 第三步:实现方法接口
          • 第四步:调用接口
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档