zoukankan      html  css  js  c++  java
  • 基于springboot构建dubbo的入门demo

      之前记录了构建dubbo入门demo所需的环境以及基于普通maven项目构建dubbo的入门案例,今天记录在这些的基础上基于springboot来构建dubbo的入门demo;众所周知,springboot极大的简化了我们的日常开发中的配置工作,所以使用springboot来构建dubbo也变的尤为简单;需求与上篇文章的一样,步骤总结为以下几点;

      一、在application.properties编写dubbo的配置文件关键代码如下:

      提供者:

    # 当前服务的名称
    dubbo.application.name=boot-user-service-provider
    
    #  注册中心的地址 这里注册中心用的是zookeeper
    dubbo.registry.address=127.0.0.1:2181
    dubbo.registry.protocol=zookeeper
    
    # 指定通信规则(通信协议:通信端口)
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=20883
    
    # 监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心
    dubbo.monitor.protocol=registry

      消费者:

    server.port=8888
    
    # 当前服务的名称
    dubbo.application.name=boot-order-service-consumer
    
    #  注册中心的地址 这里注册中心用的是zookeeper
    dubbo.registry.address=127.0.0.1:2181
    dubbo.registry.protocol=zookeeper
    
    
    
    # 监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心
    dubbo.monitor.protocol=registry

      二、在springboot项目的启动类上添加@EnableDubbo注解表示开启基于注解的dubbo模型,如无其他特殊需求,提供者和消费一样,代码如下:

    @SpringBootApplication
    @EnableDubbo //   开启基于注解的dubbo模型
    public class BootUserServiceProviderApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(BootUserServiceProviderApplication.class, args);
        }
    }

       三、对于提供者里面的各个实现类我们需要添加@Service标签来暴露服务,对于消费者我们需要在引用提供者的时候添加@Reference来引用远程的提供者

      与普通maven项目相比,基于springboot的dubbo项目配置文件的位置变化了也更倾向于注解而非xml来配置了,当然,对于习惯于xml配置的人来说,springboot也是可以实现基于xml的配置的

      提供者需要暴露的服务:

    package com.darling.boot.service;
    
    import com.alibaba.dubbo.config.annotation.Service;
    import com.darling.pubIn.bean.User;
    import com.darling.pubIn.service.UserService;
    import org.springframework.stereotype.Component;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     *   @author 董琳琳
     *   @date 2018/10/8 11:20
     *   @description
     */
    @Service // 暴露服务
    @Component
    public class UserServiceImpl implements UserService {
        @Override
        public List<User> getUserAddressList(String userId) {
            ArrayList list = new ArrayList();
            list.add(new User(3,"韦德3","男",36,"迈阿密"));
            list.add(new User(23,"詹姆斯23","男",34,"洛杉矶"));
            list.add(new User(24,"科比24","男",39,"洛杉矶"));
            return list;
        }
    
        @Override
        public void sayHello() {
            System.out.println("HELLO YSXLXSH");
        }
    
    
    }

       消费者调用服务:

    package com.darling.boot.order.service;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.darling.pubIn.bean.User;
    import com.darling.pubIn.service.OrderService;
    import com.darling.pubIn.service.UserService;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    /**
     *   @author 董琳琳
     *   @date 2018/10/8 11:42
     *   @description
     */
    @Service
    public class OrderServiceimpl implements OrderService {
    
        @Reference // 引用远程服务
        UserService service;
    
        @Override
        public List<User> initOrder(String userId) {
            return service.getUserAddressList(userId);
        }
    }

       至此基于springboot搭建dubbo入门demo的关键代码已写完,需要注意的是这里我的测试不是像之前基于maven构建时的 单元测试,而是给消费者搭建成一个web项目通过从浏览器发送请求来测试是否调用成功,消费者的controller如下:

    package com.darling.boot.order.controller;
    
    import com.darling.pubIn.bean.User;
    import com.darling.pubIn.service.OrderService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    /**
     *   @author 董琳琳
     *   @date 2018/10/8 11:44
     *   @description   订单Controller
     */
    @RestController
    public class OrderController {
    
        @Autowired
        OrderService service;
    
    
        @RequestMapping(value = "/getUserList/{userId}")
        public List<User> getUserList(@PathVariable String userId){
            return service.initOrder(userId);
    
        }
    }

      至此,基于springboot搭建dubbo的入门案例基本完成,关于dubbo案例的所有代码全部上传至GitHub,地址如下:

      公共接口服务:https://github.com/darling2047/pub-interfence

      基于springboot的提供者:https://github.com/darling2047/boot-user-service-provider

      基于springboot的消费者:https://github.com/darling2047/boot-order-service-consumer

      基于普通maven项目的提供者:https://github.com/darling2047/user-service-provider

      基于普通maven项目的消费者:https://github.com/darling2047/order-service-consumer

      以后有时间再记录下dubbo的各项常用配置

  • 相关阅读:
    Ext.grid.column.Column主要配置项及示例
    Ext.grid.Panel主要配置及示例
    EF Code First关系规则及配置
    ExtJS4系列目录
    EF Code First数据库连接配置
    ASP.NET MVC系列:ASP.NET MVC简介
    Ext JS下载及配置
    Ext.container.Viewport
    Ext.tab.Panel页签
    ASP.NET MVC系列:Controller/Action
  • 原文地址:https://www.cnblogs.com/darling2047/p/9758759.html
Copyright © 2011-2022 走看看