好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

springboot集成dubbo注解版的示例代码

工作中用 springboot 搭建项目,用 dubbo 做远程调用。springboot提倡 注解 配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。

本文假定你已经有springboot和dubbo的使用经验。

dubbo简介

dubbo是阿里巴巴开源的分布式服务框架,一般使用dubbo的rpc调用。但2016年停止维护,现在使用的2.8.4版本其实是当当维护的dubbox。2017年8月阿里又重启维护dubbo,并从2.5.7版本开始支持注解配置。

准备

此示例使用gradle构建,关于gradle的安装配置,请参考 官方文档 。

zookeeper作为dubbo服务发现的基础组件,关于zookeeper的安装启动,请参考 官方文档 。

项目结构如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

springboot-dubbo

├─settings.gradle

├─build.gradle

├─springboot-dubbo-api

│ │─build.gradle

│ └─src

│   └─main

│     └─java

│       └─org

│         └─aaron

│           └─springboot

│             └─dubbo

│               └─api

│                 demoservice.java

├─springboot-dubbo-consumer

│ │─build.gradle

│ └─src

│   └─main

│     ├─java

│     │ └─org

│     │   └─aaron

│     │     └─springboot

│     │       └─dubbo

│     │         └─consumer

│     │           democontroller.java

│     │           dubboconfiguration.java

│     │           dubboconsumerapplication.java

│     │            

│     └─resources

│        application.yml

└─springboot-dubbo-provider

   │─build.gradle

   └─src

     └─main

       ├─java

       │ └─org

       │   └─aaron

       │     └─springboot

       │       └─dubbo

       │         └─provider

       │           demoserviceimpl.java

       │           dubboconfiguration.java

       │           dubboproviderapplication.java

       │            

       └─resources

         application.yml

引入外部依赖

?

1

2

3

4

compile( 'com.alibaba:dubbo:2.6.3' )

compile( 'org.apache.zookeeper:zookeeper:3.4.9' )

compile( 'org.apache.curator:curator-framework:4.0.0' )

compile( 'org.springframework.boot:spring-boot-starter-web' )

配置

1.生产者dubbo配置

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

@configuration

public class dubboconfiguration {

 

   @bean

   public registryconfig registryconfig() {

     registryconfig registryconfig = new registryconfig();

     registryconfig.setaddress( "zookeeper://127.0.0.1:2181" );

     registryconfig.setclient( "curator" );

     return registryconfig;

   }

 

   @bean

   public applicationconfig applicationconfig() {

     applicationconfig applicationconfig = new applicationconfig();

     applicationconfig.setname( "sprintboot-dubbo-provider" );

     return applicationconfig;

   }

 

   @bean

   public protocolconfig protocolconfig() {

     protocolconfig protocolconfig = new protocolconfig();

     protocolconfig.setport( 12021 );

     protocolconfig.setname( "dubbo" );

     return protocolconfig;

   }

}

2.消费者dubbo配置

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

@configuration

public class dubboconfiguration {

 

   @bean

   public registryconfig registryconfig() {

     registryconfig registryconfig = new registryconfig();

     registryconfig.setaddress( "zookeeper://127.0.0.1:2181" );

     registryconfig.setclient( "curator" );

     return registryconfig;

   }

 

   @bean

   public applicationconfig applicationconfig() {

     applicationconfig applicationconfig = new applicationconfig();

     applicationconfig.setname( "sprintboot-dubbo-consumber" );

     return applicationconfig;

   }

 

   @bean

   public consumerconfig consumerconfig() {

     consumerconfig consumerconfig = new consumerconfig();

     consumerconfig.settimeout( 3000 );

     return consumerconfig;

   }

}

3.定义接口

?

1

2

3

public interface demoservice {

   string sayhello();

}

4.生产者实现接口

?

1

2

3

4

5

6

7

8

9

10

11

import com.alibaba.dubbo.config.annotation.service;

 

@component

@service (interfaceclass = demoservice. class , version = "1.0" )

public class demoserviceimpl implements demoservice {

 

   @override

   public string sayhello() {

     return "hello springboot dubbo" ;

   }

}

5.消费者调用接口

?

1

2

3

4

5

6

7

8

9

10

11

12

13

import com.alibaba.dubbo.config.annotation.reference;

 

@restcontroller

public class democontroller {

 

   @reference (interfaceclass = demoservice. class , version = "1.0" )

   private demoservice demoservice;

 

   @requestmapping ( "/hello" )

   public string sayhello() {

     return demoservice.sayhello();

   }

}

启动

本地启动zookeeper 依次启动springboot-dubbo-provider,springboot-dubbo-consumer 浏览器访问 localhost:8080/hello 看到返回'hello springboot dubbo' 即表示调用成功

其他

示例源码( github )

dubbo注解配置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:http://HdhCmsTestspring4all测试数据/article/1587

查看更多关于springboot集成dubbo注解版的示例代码的详细内容...

  阅读:11次