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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

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

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