Skip to content

1AnXu/thrift-demo

Repository files navigation

代码结构 version 1.0

# 本结构是一个入门小demo,涉及的服务只有一个——>GreetingService
thrift-demo
│      
│
├─thrift-demo-interface # 1. 定义服务的接口
│  │
│  └─src/main
│          ├─java
│          │  └─com.yanxu.service
│          │           GreetingService.java # 1.3 将生成的java文件放在对应的package下
│          │
│          └─resources
│              └─thrift
│                  │  hello.thrift	# 1.1 编写定义thrift文件
│                  │
│                  └─gen-java	# 1.2 通过thrift编译生成java文件
│                      └─com.yanxu.thrift.service
│                            	GreetingService.java
│
├─thrift-demo-service # 2. 编写服务接口的实现类
│  │
│  └─src/main/java
|              └─com.yanxu.service
|	 					GreetingServiceImpl.java
├─thrift-demo-server # 3.编写服务端,暴露服务
│  │
│  └─src/main/java
│              └─com.yanxu.server
│                      GreetingServer.java						
└─thrift-demo-client # 4.编写客户端,rpc调用服务
   │
   └─src/main/java
               └─com.yanxu.client
                      GreetingClient.java

代码结构version2.0 (太多了,直接见代码吧 )

步骤

  1. interface模块

    • 编写Thrift文件(包含了实体类、接口服务等)-->student.thrift

    • 使用Thrift命令编译.thrift文件,生成对应的Java文件(可能有多个文件),并粘贴到对应的package路径(由namespace指定)下(注意:package路径中不能与Java关键字,不然会变成普通文件夹

      # Thrift命令
      thrift -gen java student.thrift
  2. service模块

    • pom.xml文件中引入interface模块的依赖
    • 编写接口实现类实现StudentService.Iface接口
  3. server模块

    • pom.xml文件中引入service模块的依赖

    • 根据application.yml的配置(端口、线程数量等信息)编写Server类及start()方法

    • 编写启动类,一定要加上以下注解,以扫描和注册service模块的Bean

      @ComponentScan(basePackages = {"com.yanxu.thriftServer", "com.yanxu.thriftService"})
  4. client模块

    • 编写ThriftClient
    • 根据application.yml文件,编写ThriftClientConfig配置类,将ThriftClient交给IOC来管理
    • 根据MVC架构,编写Service层(注入ThriftClient对象并调用服务),Controller

参考博客

踩坑: