还记得,上一次我出来ssm整合bubbo+zookeeper的博客,还在学习ssm的同学可以看我上次的博客超级详细:https://blog.csdn.net/gloamer/article/details/118354272?spm=1001.2014.3001.5501看到 springboot集成dubbo+zookeeper的文章不是很多,也不是很详细 所以今天我也特意出一篇springboot集成dubbo+zookeeper 的文章来解救大家,爱我吗 嘿嘿嘿 。
实现废话不多说,多的不谈了!,咱们直接上代码!:
首先最重要的一点就是咱们要 先有注册中心,你可以在Linux上启动,也可以在Windows启动zookeeper 因为是练习我为了方便这里我就用Windows上面的zookeeper啦
zookeeper链接:
链接:https://pan.baidu.com/s/18tUyRtRhPkW0ZH2GMl-rJQ
提取码:ahua
然后就是咱们项目整体的一个架构了
项目架构dubbo-common (公共类 异常,工具类等等)
dubbo-service(接口,provider和consumer我需要引用该工程依赖)
dubbo-provider(服务的提供者)
dubbo-consumer(服务的消费者)
父工程首先创建一个父工程dubbo-parent 普通的maven工程就好了,具体父工程pom.xml文件加上:
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
然后再创建子工程dubbo-common
普通的maven工程就好了,然后再创建一个实体类pojo(User)不需要导入其他依赖
package com.shenwang.pojo;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + ''' +
", password='" + password + ''' +
'}';
}
}
dubbo-interface
创建咱们的子工程dubbo-interface,在pom.xml文件引入自己的dubbo-common子模块依赖:
com.shenwang dubbo-common1.0-SNAPSHOT
这个不要一味复制哦,咱们的groupId是不一样的
编写接口 com.shenwang.service.UserService
package com.shenwang.service;
import com.shenwang.pojo.User;
import java.util.List;
public interface UserService {
public List selectAll();
}
over 最重要的来了!
dubbo-provider首先是依赖:
先引用子工程dubbo-interface依赖,再直接复制我的依赖:
org.springframework.boot spring-boot-starter-webcom.alibaba.boot dubbo-spring-boot-starter0.2.0 com.alibaba.spring.boot dubbo-spring-boot-starter2.0.0 com.101tec zkclient0.10 org.springframework.boot spring-boot-starter-testtest mysql mysql-connector-javaruntime com.baomidou mybatis-plus-boot-starter3.2.0 com.baomidou mybatis-plus-generator3.2.0 org.freemarker freemarker2.3.28 com.alibaba fastjson1.2.47
dubbo-provider的东西比较多,怕弄不清,没关系,先看架构!
application.yml:
dubbo:
application:
#应用名称
name: dubbo-provider
#注册中心地址
registry:
address: zookeeper://127.0.0.1:2181
#扫描服务类包目录
scan:
base-packages: com.shenwang.service
protocol:
#协议名称
name: dubbo
#协议端口
port: 20880
server:
port: 8087
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123
#mybatis配置
mybatis:
mapper-locations: classpath:mappers
@EnableDubbo
@SpringBootApplication
@MapperScan("com.shenwang.mapper")
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class,args);
}
}
UserServiceImpl:
package com.shenwang.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.shenwang.mapper.UserMapper;
import com.shenwang.pojo.User;
import com.shenwang.service.UserService;
import javax.annotation.Resource;
import java.util.List;
@Service(interfaceClass = UserService.class)
public class UserServiceImpl implements UserService{
@Resource
private UserMapper userMapper;
@Override
public List selectAll() {
return userMapper.selectList(null);
}
}
mapper和mapper.xml我就不给你们啦,相信难不倒你们 嘿嘿
最后最后,服务的消费者
dubbo-consumer:废话不多说,依赖,首先引入子工程 dubbo-interface依赖再直接复制下方:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.alibaba.boot
dubbo-spring-boot-starter
0.1.0
com.github.sgroschupf
zkclient
0.1
application.yml文件:
dubbo:
application:
name: dubbo-consumer
registry:
address: zookeeper://127.0.0.1:2181
server:
port: 8081
启动类 ConsumerApplication
package com.shenwang;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
}
}
然后再创建controller(com.shenwang.controller.UserController)
package com.shenwang.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.shenwang.pojo.User;
import com.shenwang.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Reference
private UserService userService;
@GetMapping("/selectAll")
public List selectAll(){
return userService.selectAll();
}
}
这样咱们就整合完成啦,不行我现在还有点事,所以写的有些潦草,后期我会去优化此博客.



