4. 使用spring-boot-starter-dubbo
2018-04-18 本文已影响151人
茶铺里的水
spring-boot-start-dubbo,是spring-boot与dubbo有机结合的桥梁,根据spring-boot规范实现,使dubbo的使用变得及其简单快捷,容易上手,而且省去了xml的配置。让dubbo小白正常使用dubbo,只需一盏茶的功夫。
一、引入依赖
dependency>
<groupId>com.gitee.reger</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.1.1</version>
</dependency>
二、定义服务接口,在api项目中添加如下
package com.my;
/**
* hello service
* @author mk
*/
public interface HelloService {
/**
* dubbo测试接口
* @param param param
* @return result
*/
String hello(String param);
}
三、设置provider,在provider项目执行如下操作
1. 修改application.yml
,添加如下内容
#dubbo provider
spring:
dubbo:
application:
name: demo-provider
base-package: com.my.provider # dubbo服务发布者所在的包
registry:
address: 127.0.0.1 # zookeeper注册中心的地址
port: 2181 # zookeeper注册中心的端口
protocol:
name: dubbo
serialization: hessian2
provider:
retries: 0 # 服务调用重试次数,服务发布者不给重试,让服务调用者自己重试
2. 修改实现,在实现类上引入dubbo的service注解
package com.my.provider;
import com.alibaba.dubbo.config.annotation.Service;
import com.my.HelloService;
/**
* hello service
* @author mk
*/
@Service
public class HelloServiceImpl implements HelloService{
@Override
public String hello(String param) {
return "provider get param success,param is " + param;
}
}
四、设置consumer,在consumer项目上执行如下操作
1. 修改application.yml
,添加如下内容
#dubbo
spring:
dubbo:
application:
name: demo-consumer
base-package: com.my # dubbo服务调用者所在的包
registry:
address: 127.0.0.1 # zookeeper注册中心的地址
port: 2181 # zookeeper注册中心的端口
consumer:
timeout: 1000
check: true # 服务启动时检查被调用服务是否可用
retries: 2 # 服务调用重试次数
2. 调用代码示例,通过Reference或Inject注解,注入对象
package com.my.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.my.HelloService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* hello controller
* @author mk
*/
@RestController
public class HelloController {
@Reference
private HelloService helloService;
@RequestMapping("/hello")
public String hello(HttpServletRequest request, HttpServletResponse response){
String result = helloService.hello("consumer params...");
return result;
}
}
四、测试
分别启动provider和consumer,完毕后调用consumer的hello接口返回如下
image.png五、注意事项
1. provider的接口实现的@service注解一定要引用dubbo的注解,不要写成spring的
2. consumer中引入对象,需要用到dubbo的@Inject或@Reference