大致的调用流程如下:
Step1:
创建一个Maven项目,添加公共接口,以idea为例:
Step2:
2.1:创建Provider项目(Springboot),引入上述定义好的公共接口依赖:
一直Next直到项目创建完成。
2.2:在创建好的springboot项目中引入公共接口依赖:
并在原有基础上添加 apache dubbo 及 dubbo-zookeeper 相关依赖:
<!-- apache dubbo 集成 spring boot 启动依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!-- apache dubbo 集成 zookeeper 依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.3</version>
<type>pom</type>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
2.3:创建provider类,实现公共接口,并在类上使用apache dubbo提供的@Service注解:
2.4:编辑application.properties:(有需要可以换成.yml)
# springboot应用端口
server.port=8222
# 注册中心地址
dubbo.registry.address=zookeeper://localhost:2181
# 注册的应用名
dubbo.application.name=boot-provider
# 协议为dubbo
dubbo.protocol.name=dubbo
# dubbo协议端口,-1表示随机端口号
dubbo.protocol.port=-1
2.5:编辑主类:使用yml配置的可以将@PropertySource注解去掉
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
@EnableDubbo
@PropertySource("classpath:application.properties")
public class BootproviderApplication {
public static void main(String[] args) {
SpringApplication.run(BootproviderApplication.class, args);
}
}
Step3:
3.1:创建Consumer项目,引入公共接口及apache dubbo等依赖,参考provider项目
3.2:创建Consumer类,注入公共接口:
注意使用@Reference注解标注注入接口:
import com.rph.service.CommonService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class BootCommonConsumer {
@Reference
CommonService commonService;
@GetMapping("/hello/{name}")
public String sayHello(@PathVariable("name") String name) {
return commonService.sayHello(name);
}
}
3.3:配置application.properties文件(可换成.yml)
# springboot应用端口
server.port=8333
# dubbo应用名称
dubbo.application.name=dubbo-boot-consumer
# 服务注册中心地址
dubbo.registry.address=zookeeper://localhost:2181
3.4:修改Consumer主类:(yml配置去掉@PropertySource注解)
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication
@EnableDubbo
@PropertySource("classpath:application.properties")
public class BootconsumerApplication {
public static void main(String[] args) {
SpringApplication.run(BootconsumerApplication.class, args);
}
}
Step4:
4.1:启动本地zookeeper服务(./zkServer)(zookeeper自行下载)
4.2:启动provider项目
4.3:启动consumer项目
4.4:访问consumer提供的服务地址
PS: 可以使用dubbo-admin或者zookeeper的zkCli查看服务是否注册成功
附上apache dubbo集成springboot的官方示例:
https://github.com/apache/dubbo-spring-boot-project