基于springboot构建dubbo的入门demo

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

  1、在application.properties编写dubbo的配置文件关键代码以下:git

  提供者:github

# 当前服务的名称
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

  消费者:web

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

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

@SpringBootApplication
@EnableDubbo //   开启基于注解的dubbo模型
public class BootUserServiceProviderApplication {

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

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

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

  提供者须要暴露的服务:app

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");
    }


}

   消费者调用服务:maven

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以下:ide

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的各项经常使用配置

相关文章
相关标签/搜索