首页 > 开发 > Java > 正文

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

2024-07-14 08:42:37
字体:
来源:转载
供稿:网友

工作中用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的安装启动,请参考官方文档。

项目结构如下

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

引入外部依赖

  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配置

@Configurationpublic 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配置

@Configurationpublic 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.定义接口

public interface DemoService {  String sayHello();}

4.生产者实现接口

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.消费者调用接口

import com.alibaba.dubbo.config.annotation.Reference;@RestControllerpublic class DemoController {  @Reference(interfaceClass = DemoService.class, version = "1.0")  private DemoService demoService;  @RequestMapping("/hello")  public String sayHello() {    return demoService.sayHello();  }}

启动

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

其他

示例源码(Github) 

Dubbo注解配置

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表