Dubbo 03: 直连式 + 接口工程

  • 进一步改正dubbo框架中简单的直连式的不足
  • 需要用到3个相互独立的maven工程,项目1为maven的java工程作为接口工程,项目2,3为maven的web工程
    工程1:o3-link-interface 作为接口工程工程2:o4-link-userservice-provider 作为服务的提供者工程3:o5-link-consumer 作为使用服务的消费者
工程1
  • 结构:与简单的直连式不同的是,引入了接口工程,将实体类和所提供的服务的接口放在接口工程里
    Dubbo 03: 直连式 + 接口工程

    文章插图
  • pom文件
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example.dubbo</groupId><artifactId>o3-link-interface</artifactId><version>1.0.0</version><packaging>jar</packaging><build><plugins><!--JDK1.8编译插件--><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>
  • 实体类:注意要实现序列化接口,数据需要通过socket网络传输
    package com.example.dubbo.model;import java.io.Serializable;public class User implements Serializable {private String id;private String name;private String age;@Overridepublic String toString() {return "User{" +"id='" + id + '\'' +", name='" + name + '\'' +", age='" + age + '\'' +'}';}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public User(String id, String name, String age) {this.id = id;this.name = name;this.age = age;}public User() {}}
  • 服务接口:
    package com.example.dubbo.service;import com.example.dubbo.model.User;public interface UserService {/*** 根据用户id,获取用信息*/User queryUserById(String id);}
工程2