正经学徒,佛系记录,不搞事情
一、项目最终目录:
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
pom
追加dubbo依赖和zookeeper客户端
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
org.apache.curator
curator-framework
2.12.0
以及module:
dubbo-interface
dubbo-provider
dubbo-consumer
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添加
com.mn
dubbo-interface
0.0.1-SNAPSHOT
七、测试
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