基於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的各項常用配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章