springboot整合dubbo

本文使用的springboot版本为2.0.6.RELEASE
dubbo-spring-boot-starter使用阿里巴巴提供的,版本为0.2.0,依赖dubbo版本为2.6.2
0.2.1+版本依赖的springboot版本为2.1.x
如果想使用2.7.0+版本的dubbo可以使用apache提供的dubbo-spring-boot-starter
springboot版本也需要依赖到2.1.x
下面有项目链接作为参考

创建服务接口工程

  1. 创建一个User类
public class User implements Serializable {

    private static final long serialVersionUID = -1563308959112481804L;

    private String name;

    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}
  1. 创建服务接口
public interface TestService {

    String getString(String src);

    User getUser(String name, int age);
}

服务接口工程只提供接口不提供实现。
创建完了需要maven install,在后续的消费和生产中使用

创建生产者,提供服务

  1. 引入依赖
<!-- 引入创建的接口服务 -->
<dependency>
    <groupId>demo.springboot</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

<!-- duboo -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

<!-- 生产者不属于web项目,只需要引入spring-boot-starter即可 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
  1. 修改配置文件
application:
  #版本号
  version: 1.0.0

dubbo:
  application:
    #应用名称,每个dubbo应用的名称都是唯一的
    name: dubbo-producer
  registry:
    #注册中心
    address: zookeeper://172.16.77.131:2181
  protocol:
    #协议名称
    name: dubbo
    #服务暴露端口
    port: 20880
  scan:
    #扫描服务注册bean,即service实现类所在的包
    basePackages: demo.springboot.service.impl
  1. 实现服务接口
//此处的@Service是dubbo提供的,不是spring中的
@Service(version = "${application.version}")
public class TestServiceImpl implements TestService {
    @Override
    public String getString(String src) {
        return src;
    }

    @Override
    public User getUser(String name, int age) {
        User user = new User();
        user.setName(name);
        user.setAge(age);
        return user;
    }
}
  1. 创建启动类
@SpringBootApplication
public class ProducerApplication {

    public static void main(String[] args) {
        //生产者不需要是web项目
        new SpringApplicationBuilder(ProducerApplication.class)
                .web(WebApplicationType.NONE)   //非web应用
                .run(args);
    }
}

运行springboot启动类,启动服务

创建消费者,消费服务

  1. 引入依赖
<!-- 引入创建的接口服务 -->
<dependency>
    <groupId>demo.springboot</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

<!-- 消费者是web项目 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- dubbo -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>
  1. 修改配置文件
server:
  port: 8080
  servlet:
    context-path: /

application:
  #版本号
  version: 1.0.0

dubbo:
  application:
    #应用名称,每个dubbo应用的名称都是唯一的
    name: dubbo-consumer
  registry:
    #注册中心
    address: zookeeper://172.16.77.131:2181
  1. 创建controller
@RestController
public class TestController {

    //使用dubbo提供的@Reference装配bean
    @Reference(version = "${application.version}")
    private TestService testService;

    @GetMapping("/getString")
    public String getString(String src){
        return testService.getString(src);
    }

    @GetMapping("/getUser")
    public User getUser(String name, Integer age){
        return testService.getUser(name, age);
    }
}
  1. 创建启动类
@SpringBootApplication
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

启动消费者项目,浏览器访问对应的请求就可以了。

项目路径


作者博客

作者公众号


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近听闻公司的项目打算进行重构,大佬们商量准备使用近年大火的SpringCloud,所以在开始学习Springcl...
    Ranger23阅读 37,749评论 4 14
  • 上一篇涉及一个问题,前面的案例是一个接口的注册,如果涉及多个接口呢?不可能在xml配置文件中配置所有的接口,如果那...
    小manong阅读 4,099评论 0 0
  • 天台山的僧人智果,喜欢云游。有一回在山间迷了路,走到一个大石洞里,中间坐有一个道人,穿着用叶子做成的衣裳。 智果下...
    历史学者唐不闻阅读 4,707评论 0 0
  • 属于那个遥远年代的现实,再说也是毫无意义的现实已丢失殆尽,以至当有人在离我不远的地方问起,希尔贝特在当松维尔的那块...
    幽玄莫素阅读 1,215评论 0 0
  • 越长大越明白一个人只有爱自己才能够收获别人的爱,每个人都是一样的。每个人在遇到爱情的时候心里都能开出花来,我们面对...
    池鱼思故渊吖阅读 942评论 0 1