springboot集成dubbo有多种方式,这里介绍一种比较新的不用xml的方式分享给大家,用到依赖dubbo-spring-boot-starter
项目环境:win10+jdk1.8+zookeeper3.4.13+springboot2.0.6
zookeeper的安装和配置不了解的,读者大人请自行百度。
项目运行前,首先启动zookeeper的zkServer.cmd。
spring-dubbo-test:父级项目,简单的maven项目,未用任何模板
dubbo-api:接口,简单的maven项目,未用任何模板
dubbo-consumer和dubbo-provider:消费端和服务端,新建的SpringBoot项目
父级项目的pom.xml
4.0.0
com.changan
spring-dubbo-test
1.0-SNAPSHOT
dubbo-api
dubbo-consumer
dubbo-provider
pom
springboot-dubbo
Demo project for Spring Boot And Dubbo
org.springframework.boot
spring-boot-starter-parent
2.0.6.RELEASE
UTF-8
UTF-8
1.8
4.0.1
3.4.13
0.2.0
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.alibaba.boot
dubbo-spring-boot-starter
${dubbo.starter.version}
org.apache.curator
curator-framework
${curator-framework.version}
org.apache.zookeeper
zookeeper
${zookeeper.version}
org.springframework.boot
spring-boot-maven-plugin
结构
接口pom.xml
4.0.0
com.changan.api
dubbo-api
0.0.1-SNAPSHOT
jar
dubbo-api
Demo project for Spring Boot
spring-dubbo-test
com.changan
1.0-SNAPSHOT
org.springframework.boot
spring-boot-maven-plugin
测试项目,接口中只有一个方法
package com.changan.api;
/**
* @author zhanganbing
* @date 2018/10/28/028 20:42
* @desc 服务接口
*/
public interface DubboProviderService {
String sayHello();
}
结构
消费端pom.xml
4.0.0
com.changan.consumer
dubbo-consumer
0.0.1-SNAPSHOT
jar
dubbo-consumer
Demo project for Spring Boot
spring-dubbo-test
com.changan
1.0-SNAPSHOT
UTF-8
UTF-8
1.8
com.changan.api
dubbo-api
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
application.yml
dubbo:
application:
name: dubbo-consumer
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
serialization: hessian2
port: 20881
consumer:
timeout: 1000
server:
port: 9091
spring:
application:
name: dubbo-consumer
消费端web DubboTestController代码:
package com.changan.dubboconsumer.web;
import com.alibaba.dubbo.config.annotation.Reference;
import com.changan.api.DubboProviderService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*@author zhanganbing
*@date 2018/10/31/031 22:12
*/
@RestController
@RequestMapping("/test")
public class DubboTestController {
@Reference
private DubboProviderService dubboProviderService;
@RequestMapping("/hello")
public String sayHelloToDubbo(){
return dubboProviderService.sayHello();
}
}
这里有两点值得注意:
不能使用@Autowired自动注入,而要用Dubbo提供的@Reference注解
pom.xml一定要依赖于api,即添加api的dependency
结构
服务端pom.xml
4.0.0
com.changan.provider
dubbo-provider
0.0.1-SNAPSHOT
jar
dubbo-provider
Demo project for Spring Boot
spring-dubbo-test
com.changan
1.0-SNAPSHOT
UTF-8
UTF-8
1.8
com.changan.api
dubbo-api
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
application.yml
dubbo:
application:
name: dubbo-provider
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
serialization: hessian2
port: 20880
provider:
timeout: 1000
server:
port: 9092
spring:
application:
name: dubbo-provider
服务端DubboProviderServiceImpl代码
package com.changan.dubboprovider.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.changan.api.DubboProviderService;
/**
*@author zhanganbing
*@date 2018/10/31/031 22:17
*/
@Service
public class DubboProviderServiceImpl implements DubboProviderService {
@Override
public String sayHello() {
return "hello dubbo!!!!";
}
}
这里也有两点值得注意:
@Service必须使用dubbo提供的
pom.xml一定要依赖于api,即添加api的dependency
服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
eg、
引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。
eg、
协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
eg、
应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
eg、
模块配置,用于配置当前模块信息,可选。
注册中心配置,用于配置连接注册中心相关信息。
eg、
监控中心配置,用于配置连接监控中心相关信息,可选。
提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。
消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。
方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。
用于指定方法参数配置。
yml可以类比设置
运行两个springboot项目的启动类,启动类上必须加注解@EnableDubbo
用浏览器访问路径
项目github地址:https://github.com/Jackson-zhanganbing/spring-dubbo-test