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. <dependency>

  2. <groupId>com.alibaba.spring.boot </groupId>

  3. <artifactId>dubbo-spring-boot-starter </artifactId>

  4. <version>2.0.1-SNAPSHOT </version>

  5. </dependency>

可以新建一个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 <Shop>{

  14. /**

  15. * 分页查询

  16. * @param shopInVo

  17. * @return

  18. */

  19. public BaseResp <Pager<Shop>> 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 <T> {

  9. /**

  10. * 新增记录

  11. * @param t

  12. * @return

  13. */

  14. public BaseResp <Long> create(T t);

  15. /**

  16. * 根据主键删除

  17. * @param pk

  18. * @return

  19. */

  20. public BaseResp <Integer> delete(Long pk);

  21. /**

  22. * 根据主键更新记录

  23. * @param t

  24. * @return

  25. */

  26. public BaseResp <Integer> update(T t);

  27. /**

  28. * 根据主键查询

  29. * @param pk

  30. * @return

  31. */

  32. public BaseResp <T> 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<Pager> 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、目前没遇到什么问题,如果有,可以发消息我一起探讨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值