开启dubbo之旅——springboot整合dubbo+zookeeper
正经学徒,佛系记录,不搞事情一、项目最终目录:dubbo-provider:服务提供者dubbo-consumer:服务消费者dubbo-interface:消费者与提供者共同的接口层由于dubbo的消费者与提供者都需要使用到共同的接口,因此本项目使用maven多模块构建项目,减少代码的重复maven多模块构建项目可参考博客:https://blog.csdn.net/...
正经学徒,佛系记录,不搞事情
一、项目最终目录:
dubbo-provider:服务提供者
dubbo-consumer:服务消费者
dubbo-interface:消费者与提供者共同的接口层
由于dubbo的消费者与提供者都需要使用到共同的接口,因此本项目使用maven多模块构建项目,减少代码的重复
maven多模块构建项目可参考博客:https://blog.csdn.net/qq_31748587/article/details/84849520
二、创建一个springboot父工程:dubbo-parent
选中web起步依赖
删除无用的文件夹,只留pom.xml文件
修改打包方式为pom
<packaging>pom</packaging>
追加dubbo依赖和zookeeper客户端
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- zookeeper客户端 2.6以前的版本使用zkclient,dubbo 2.6+使用curator-->
<!--<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
以及module:
<modules>
<module>dubbo-interface</module>
<module>dubbo-provider</module>
<module>dubbo-consumer</module>
</modules>
dubbo-parent项目作为父项目,子项目将自动继承依赖,子项目的pom.xml就不需要在重复写依赖的jar
三、创建一个服务提供者:dubbo-provider
剩下的同创建父工程的流程,最后注意项目路径
配置application.yml(或者application.properties,两者作用相同,只是格式不同)
server:
port: 7003
dubbo:
application:
name: dubbo-provider #服务名称
registry:
protocol: zookeeper #注册中心的协议
address: 127.0.0.1:2181 #注册中心的地址
protocol:
name: dubbo #通信协议
port: 20880 #通信端口
monitor:
protocol: registry #连接监控中心
四、创建一个服务消费者:dubbo-consumer
步骤同三
配置application.yml
server:
port: 7004
dubbo:
application:
name: dubbo-consumer #服务名称
registry:
protocol: zookeeper #注册中心的协议
address: 127.0.0.1:2181 #注册中心的地址
monitor:
protocol: registry #连接监控中心
五、创建一个接口项目:dubbo-interface
此项目只需要创建普通的maven项目
六、配置项目之间的依赖
dubbo-provider和dubbo-consumer两者都依赖于dubbo-interface
pom.xml添加
<!--依赖接口项目-->
<dependency>
<groupId>com.mn</groupId>
<artifactId>dubbo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
七、测试
- 接口项目定义一个接口
public interface UserBS {
UserDTO get();
}
- 服务提供者提供实现接口
@Service
public class UserBSImpl implements UserBS{
@Override
public UserDTO get() {
return new UserDTO("1","zhangsan",20);
}
}
这里要注意的是,@Service的注解在这里是为了实现远程调用的,使用的是dubbo提供的注解
com.alibaba.dubbo.config.annotation.Service;
最后启动类添加注解@EnableDubbo
- 服务消费者调用接口
消费者端是一个普通的springmvc项目
//控制类
@RestController
public class CallController {
@Autowired
private CallBS callBS;
@GetMapping("get")
public UserDTO get(){
return callBS.getUser();
}
}
//业务类
@Service
public class CallBSImpl implements CallBS {
@Reference
private UserBS userBS;
@Override
public UserDTO getUser() {
return userBS.get();
}
}
这里业务类的@Service注解是web注解
org.springframework.stereotype.Service;
@Reference注解作用同@Atuowire,注入接口项目提供的服务,与dubbo的@Service结合使用
最终结果:
请求成功
项目地址:
https://pan.baidu.com/s/1UtxOXtAvMxlidi0N-MDqmA 提取码: 6313
更多推荐
所有评论(0)