前言
dubbo框架与spring boot整合,不需要导入其他的包,也不需要繁琐的重复配置
我这里使用的是idea+gradle4.8+spring boot2.x构建本项目的接下来讲解如何配置
总体来说分为一下几个步骤
1.创建一个公共Module,把bean,和接口都写进此module
2.创建服务提供者,依赖公共Module
3.添加dubbo-spring boot依赖
4.编写配置文件
5.暴露服务Service
6.启动类上面加上EnableDubbo注解,启动
7.服务消费者,一样之
1.创建公共Module
File->new->project->spring boot项目,一个服务都不需要,直接创建
我这里只写了2个接口,然后公共Module创建完毕
2.创建服务提供者
新建spring boot项目,导入spring boot整合dubbo的依赖,添加这个依赖之后,里面的一些相关包都给你引入进来了,比如说zookeeper,dubbo,logback等等
implementation 'com.alibaba.boot:dubbo-spring-boot-starter:0.2.0'
然后依赖之前创建好的Module,File->Project Structure->Module->import Module->ok
然后我们编写Service 层,实现module层的UserService接口,
import com.alibaba.dubbo.config.annotation.Service;
import com.wocus.service.service.UserService;
import org.springframework.stereotype.Component;
/**
* @program: dubbo_service01
* @description: 用户服务实现类
* @author: jiang wei
* @create: 2019-03-18 11:52
*/
@Service(version = "1.0.0")
@Component
public class UserServiceImpl implements UserService {
@Override
public String selectByUserId(String id) {
return "传递了一个值"+id+"使用的是20081服务器";
}
}
注意:Service注解dubbo和这个同名,dubbo的Service是暴露服务,因此,我们需要在类上注明@Service注解,以前的Service注解用Component取而代之即可,这样,服务就暴露出去了
接下来就是配置文件
dubbo.application.name=dubbo-service01 #服务应用名
dubbo.registry.address=zookeeper://10.10.80.221:2181 //注册中心地址
dubbo.protocol.name=dubbo //dubbo名称
dubbo.protocol.port=20881 //dubbo端口
dubbo.provider.loadbalance=random //负载均衡算法
dubbo.monitor.protocol=registry //自动发现服务
然后在启动类,注解@EnableDubbo启动,然后再看dubbo admin控制台,服务以及成功注册
3.创建服务消费者
和创建服务提供者一样,新建spring boot项目,依赖dubbo,然后编写Controller去消费服务,启动类上加上注解@EnableDubbo,编写配置文件
import com.alibaba.dubbo.config.annotation.Reference;
import com.wocus.service.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @program: dubbo_customer01
* @description: 用户服务类
* @author: jiang wei
* @create: 2019-03-19 09:08
*/
@RestController
public class UserController {
@Reference
private UserService userService;
@RequestMapping("/user")
public String getUser(){
return userService.selectByUserId("21");
}
}
这里用dubbo的@Referenece注解就远程调用了另一台服务器的service了,打包DubboAdmin控制台也可以看得到,有消费服务了
基于dubbo的项目搭建已经完成了,后面文章,将讲解一些超时配置,实时检测,本地策略,dubbo直连等等