• dubbo与springboot的集成和使用dubbo-spring-boot-starter


    dubbo最近更新了dubbo-spring-boot-starter的jar包,废话不多少,看看如何使用。

    首先我们可以通过github编译打包最新的starter,

    Git地址为:https://github.com/alibaba/dubbo-spring-boot-starter.git

    在springboot项目的pom.xml中新增,添加maven的依赖。

    1. com.alibaba.spring.boot

    2. dubbo-spring-boot-starter

    3. 2.0.1-SNAPSHOT

    可以新建一个springboot-dubbo-api工程,用来做接口定义,方便provider和consumer端使用,避免重复编码

    接口定义示例:

    1. import com.xq.live.dubbo.common.BaseResp;

    2. import com.xq.live.dubbo.common.Pager;

    3. import com.xq.live.dubbo.model.Shop;

    4. import com.xq.live.dubbo.service.BaseSerivce;

    5. import com.xq.live.dubbo.vo.ShopInVo;

    6. /**

    7. * @package: com.xq.live.dubbo.api

    8. * @description: 商家接口定义

    9. * @author: zhangpeng32

    10. * @date: 2018/3/25 12:18

    11. * @version: 1.0

    12. */

    13. public interface ShopApi extends BaseSerivce {

    14. /**

    15. * 分页查询

    16. * @param shopInVo

    17. * @return

    18. */

    19. public BaseResp > queryWithPg(ShopInVo shopInVo);

    20. }

    在这里我定义了一个BaseService,用来定义一些通用的接口方法,包含了简单的增删改查,也可以把分页的方法写在里面。

    1. /**

    2. * @package: com.xq.live.dubbo.common

    3. * @description: 基础接口类

    4. * @author: zhangpeng32

    5. * @date: 2018/3/25 12:27

    6. * @version: 1.0

    7. */

    8. public interface BaseSerivce {

    9. /**

    10. * 新增记录

    11. * @param t

    12. * @return

    13. */

    14. public BaseResp create(T t);

    15. /**

    16. * 根据主键删除

    17. * @param pk

    18. * @return

    19. */

    20. public BaseResp delete(Long pk);

    21. /**

    22. * 根据主键更新记录

    23. * @param t

    24. * @return

    25. */

    26. public BaseResp update(T t);

    27. /**

    28. * 根据主键查询

    29. * @param pk

    30. * @return

    31. */

    32. public BaseResp get(Long pk);

    33. }

    在springboot-dubbo-provider项目中,首先做好dubbo和springboot的集成配置:

    1. ## dubbo springboot 配置

    2. spring.dubbo.application.id=live-dubbo-provider

    3. spring.dubbo.application.name=live-dubbo-provider

    4. spring.dubbo.registry.address=zookeeper://127.0.0.1:2181

    5. spring.dubbo.server=true

    6. spring.dubbo.protocol.name=dubbo

    7. spring.dubbo.protocol.port=20880

    在springboot的启动类添加@EnableDubboConfiguration注解:

    1. @MapperScan( “com.xq.live.dubbo.dao”)

    2. @EnableDubboConfiguration

    3. @SpringBootApplication

    4. public class DubboServerApplication {

    5. public static void main(String[] args) {

    6. SpringApplication.run(DubboServerApplication.class, args);

    7. }

    8. }

    ShopApi接口实现类,示例如下:

    1. import com.alibaba.dubbo.config.annotation.Service;

    2. import com.xq.live.dubbo.api.ShopApi;

    3. import com.xq.live.dubbo.common.BaseResp;

    4. import com.xq.live.dubbo.common.Pager;

    5. import com.xq.live.dubbo.common.ResultEnums;

    6. import com.xq.live.dubbo.dao.ShopDao;

    7. import com.xq.live.dubbo.model.Shop;

    8. import com.xq.live.dubbo.vo.ShopInVo;

    9. import org.springframework.beans.factory.annotation.Autowired;

    10. import org.springframework.stereotype.Component;

    11. /**

    12. * @package: com.xq.live.dubbo.handler

    13. * @description: 商家dubbo服务实现类

    14. * @author: zhangpeng32

    15. * @date: 2018/3/25 12:40

    16. * @version: 1.0

    17. */

    18. @Service(interfaceClass = ShopApi.class)

    19. @Component

    20. public class ShopHandler implements ShopApi {

    21. @Autowired

    22. private ShopDao shopDao;

    23. @Override

    24. public BaseResp create(Shop shop) {

    25. return null;

    26. }

    27. @Override

    28. public BaseResp delete(Long pk) {

    29. return null;

    30. }

    31. @Override

    32. public BaseResp update(Shop shop) {

    33. return null;

    34. }

    35. @Override

    36. public BaseResp get(Long pk) {

    37. Shop shop = shopDao.selectByPrimaryKey(pk);

    38. return new BaseResp(ResultEnums.SUCCESS, shop);

    39. }

    40. @Override

    41. public BaseResp queryWithPg(ShopInVo shopInVo) {

    42. return null;

    43. }

    44. }

    启动本地的zookeeper: 在 zookeeper-3.4.11in目录下执行zkServer.bat,启动zookeeper。

    启动dubbo-admin可以用户查看服务注册情况以及权重调整等。

    源码可以在这里获取:https://github.com/alibaba/dubbo.git

    启动后界面如下:

    启动springboot-dubbo-provider应用,可以通过dubbo-admin看到服务注册成功。

    消费端

    消费端application.properties配置为:

    1. ## 避免和 server 工程端口冲突

    2. server.port=8081

    3. ## Dubbo 服务消费者配置

    4. spring.dubbo.application.name=live-dubbo-consumer

    5. spring.dubbo.application.id=live-dubbo-consumer

    6. spring.dubbo.protocol.port=20800

    7. spring.dubbo.protocol.name=dubbo

    8. spring.dubbo.registry.address=zookeeper://127.0.0.1:2181

    接口实例化和调用示例:

    1. import com.alibaba.dubbo.config.annotation.Reference;

    2. import com.xq.live.dubbo.api.ShopApi;

    3. import com.xq.live.dubbo.common.BaseResp;

    4. import com.xq.live.dubbo.model.Shop;

    5. import org.springframework.stereotype.Component;

    6. /**

    7. * @package: com.xq.live.dubbo.service

    8. * @description: TODO

    9. * @author: zhangpeng32

    10. * @date: 2018/3/25 12:58

    11. * @version: 1.0

    12. */

    13. @Component

    14. public class ShopDubboService {

    15. @Reference

    16. private ShopApi shopApi;

    17. public BaseResp get(Long id){

    18. return shopApi.get(id);

    19. }

    20. }

    下面是消费端的springboot启动类配置:

    1. import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;

    2. import com.xq.live.dubbo.common.BaseResp;

    3. import com.xq.live.dubbo.model.Shop;

    4. import com.xq.live.dubbo.service.ShopDubboService;

    5. import org.springframework.beans.factory.annotation.Autowired;

    6. import org.springframework.boot.SpringApplication;

    7. import org.springframework.boot.autoconfigure.SpringBootApplication;

    8. import org.springframework.web.bind.annotation.RequestMapping;

    9. import org.springframework.web.bind.annotation.RestController;

    10. @SpringBootApplication

    11. @RestController

    12. @EnableDubboConfiguration

    13. public class DubboClientApplication {

    14. @Autowired

    15. private ShopDubboService shopDubboService;

    16. public static void main(String[] args) {

    17. SpringApplication.run(DubboClientApplication.class, args);

    18. }

    19. @RequestMapping(value = “/”)

    20. public String hello(){

    21. BaseResp baseResp = shopDubboService.get( 1L);

    22. return "hello "+ baseResp.getCode()+ ": NAME : "+baseResp.getData().getShopName();

    23. }

    24. }

    启动消费端,我这里使用的端口是8081,服务器采用的springboot内置的tomcat.启动后可以在dubbo-admin看到消费端注册成功。

    总结:

    1、dubbo和springboot的结合非常简单,引入dubbo的starter即可。

    2、application.properties配置清晰简单,各配置都非常完整。

    3、本示例中用到的各种工具类可以忽略,我只是为了统一返回需要做的一个定义。

    4、目前没遇到什么问题,如果有,可以发消息我一起探讨。

  • 相关阅读:
    alert、consloe、console.error、confirm、prompt
    vue的hook(钩子函数)
    『亚马逊云科技产品测评』活动征文|开发一个手机官网
    C语言实现姿态四元数转旋转矢量
    力扣:递增子序列java
    数据质量与数据质量八个维度指标
    Golang高性能日志库zap + lumberjack 日志切割组件详解
    openpyxl单元格公式批注字体对齐边框填充
    Java手写选择排序和算法案例拓展
    NSIS:禁止选择安装路径和编辑安装目录
  • 原文地址:https://blog.csdn.net/Ajekseg/article/details/126327915