以前写过一篇搭建Dubbo环境,当时是直接调用api的。这次写一篇和SpringBoot集成的。
背景
接手了一个项目,使用到了SpringBoot+Dubbo,就自己整理出一个最小版的环境。
版本
java: 8
SpringBoot: 2.2.10.RELEASE
Dubbo: 2.7.8
Nacos: 使用docker,nacos/nacos-server:2.0.2
部分代码说明
先启动Nacos服务
docker-compose up -d
即可。
version: "3"
services:
nacos:
image: nacos/nacos-server:2.0.2
container_name: nacos
restart: always
ports:
- 8848:8848
- 9848:9848
- 9849:9849
environment:
- TZ=Asia/Shanghai
- LANG=en_US.utf8
- MODE=standalone
假设 nacos 服务所在机器 ip 为192.168.18.55,则nacos访问地址是 http://192.168.18.55:8848/nacos
,账号密码都是nacos。
创建服务提供者并提供Dubbo接口
Dubbo接口
package cn.valuetodays.common.service;
/**
* .
*
* @author lei.liu
* @since 2025-06-03
*/
public interface HelloService {
String hi(String name);
}
服务提供者,注意使用了@DubboService注解
package com.valuetodays.provider;
import cn.valuetodays.common.service.DubboServiceConstant;
import cn.valuetodays.common.service.HelloService;
import org.apache.dubbo.config.annotation.DubboService;
/**
* .
*
* @author lei.liu
* @since 2025-06-03
*/
@DubboService(group = DubboServiceConstant.API_PROVIDER_GROUP, version = "1.0.0", timeout = 30000)
public class HelloServiceImpl implements HelloService {
@Override
public String hi(String name) {
return "hi, " + name;
}
}
创建服务消费者,注意使用了DubboReference注解
package cn.valuetodays.consumer;
import cn.valuetodays.common.service.DubboServiceConstant;
import cn.valuetodays.common.service.HelloService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* .
*
* @author lei.liu
* @since 2025-06-03
*/
@RestController
public class IndexController {
@DubboReference(group = DubboServiceConstant.API_PROVIDER_GROUP, version = "1.0.0", timeout = 30000, retries = 3)
private HelloService helloService;
@RequestMapping("")
public String hi(String name) {
return helloService.hi(name);
}
}
调用
之前已经启动nacos服务了。
此时先启动provider
再启动consumer,会看到打印了hi,aaa
再 curl http://localhost:60001?name=billy
可以看到调用成功了。
注意事项
provider和consumer都要配置dubbo和nacos。见各自的application.yml。
附件
源码见:
https://valuetodays.github.io/statics/images/eblog/202506/springboot2-dubbo/springboot2-dubbo.zip