springboot-dubbo
首先先创建一个简单的maven项目
里面存放实体类(entity)服务类(service)
实体类要继承Serializable
实体类可以引入lombok依赖一个@Data注解完事
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
service层写简单的接口
List<User> getAll();//查询
Integer update(User user);//修改
Integer add(User user);//添加
Integer delete(Integer id);//根据id删除
在创建一个provider项目
- provider 作用
该项目提供 Service 接口的服务, 并把服务注册到 Zookeeper 注册中心, 供服务消费者订阅调用。 - provider 原理
在项目中配置 Zookeeper 注册中心地址, 并把服务实现类暴露给注册中心。(下面会有Zookeeper 注册中心的原理使用流程) - provider 实现步骤
1)添加springbootDubbo依赖 :spring-boot-starter-dubbo以及Zookeeper 注册中心依赖
<!-- dubbo集成springboot的依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- zookeeper注册中心 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<type>pom</type>
</dependency>
还有一个就是要把刚刚创建的api项目里的接口依赖引入
打开刚刚创建的api项目pom.xml文件复制到provider项目pom.xml里引入接口依赖
数据库依赖以及mybatis依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
接下来就是配置StringBoot 集成 Dubbo 相关服务端配置信息(application.properties)
# 应用名称
spring.application.name=dubbo-consumer
#数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/scdb20210906?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#数据库用户名&密码
spring.datasource.username=root
spring.datasource.password=123456
#数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#应用服务WEB访问端口
server.port=8082
#配置dubbo服务名称
dubbo.application.name=dubbo-consumer
#配置注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
mybatis.typeAliasesPackage=com.ck.entity
mybatis.mapperLocations=classpath:mapper/*.xml
spring.profiles.active=dev
- 注意: Zookeeper 注册中心地址为: zookeeper://127.0.0.1:2181 provider 项目端口号为
8002, 暴露服务端口号为: 20882
准备工作做好开始写接口
创建一个mapper类
List<User> getAll();//查询
Integer update(User user);//修改
Integer add(User user);//添加
Integer delete(Integer id);//根据id删除
创建提供的服务(service.impl)
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public List<User> getAll() {
return userMapper.getAll();
}
@Override
public Integer update(User user) {
return userMapper.update(user);
}
@Override
public Integer add(User user) {
return userMapper.add(user);
}
@Override
public Integer delete(Integer id) {
return userMapper.delete(id);
}
创建mapper文件夹
mapper.xml(存放sql语句)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ck.mapper.UserMapper">
<select id="getAll" resultType="user">
select * from user
</select>
<update id="update">
UPDATE `user` SET `name` = #{name}, `age` = #{age}, `sex` = #{sex} WHERE
`id` = #{id};
</update>
<insert id="add">
INSERT INTO `user` (`name`, `age`, `sex`) VALUES (#{name},#{age},#{sex});
</insert>
<delete id="delete">
delete from user where id=#{id};
</delete>
</mapper>
namespace=“接口的方法”
发布服务
@MapperScan("com.ck.mapper")
@EnableDubbo
@SpringBootApplication
public class DubboServiceApplication {
public static void main(String[] args) {
SpringApplication.run(DubboServiceApplication.class, args);
}
}
注意几个注解
@MapperScan(“扫描接口包”)
@EnableDubbo(启动Dubbo)
再创建一个springboot-dubbo-consumer项目
-
consumer 作用
该项目消费 Service 接口的服务, 从 Zookeeper 注册中心订阅调用 Service 服务。 -
consumer 原理
在项目中配置 Zookeeper 注册中心地址, 项目按照接口类型调用远程服务 Service。 -
consumer 实现步骤
添加springbootDubbo依赖 :spring-boot-starter-dubbo以及Zookeeper 注册中心依赖
<!-- dubbo集成springboot的依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- zookeeper注册中心 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<type>pom</type>
</dependency>
在配置文件中配置 StringBoot 集成 Dubbo 相关消费端配置信息(application.properties)
(和provider项目配置一样就行)
# 应用名称
spring.application.name=dubbo-consumer
#数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/scdb20210906?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#数据库用户名&密码
spring.datasource.username=root
spring.datasource.password=123456
#数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#应用服务WEB访问端口
server.port=8082
#配置dubbo服务名称
dubbo.application.name=dubbo-consumer
#配置注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
mybatis.typeAliasesPackage=com.ck.entity
mybatis.mapperLocations=classpath:mapper/*.xml
spring.profiles.active=dev
创建服务消费类
@RestController
public class UserController {
@Reference
UserService userService;
//查询
@RequestMapping("/getAll")
public List<User> getAll(){
return userService.getAll();
}
//修改
@RequestMapping("/update")
public Integer update(User user) {
return userService.update(user);
}
//添加
@RequestMapping("/add")
public Integer add(User user) {
return userService.add(user);
}
//添加
@RequestMapping("/delete")
public Integer delete(Integer id) {
return userService.delete(id);
}
在控制器层(或其它层)声明同类型属性,并使用@Reference 自动注入远程服务
@Reference 的包为 com.alibaba.dubbo.config.annotation.Reference
在已经启动 zookeeper 注册中心和 springboot-dubbo-provider 的前提下, 启动 SpringBoot 项目springboot-dubbo-consumer
现在来讲下zookeeper 注册中心
我给大家准备好了直接下载解压
链接:https://pan.baidu.com/s/1eCwsQHHWD0gVeLJ2qzTBFQ
提取码:0zme
也可以去官网下载http://www.apache.org/dyn/closer.cgi/zookeeper下载后解压即可
打开bin
双击打开红框即可运行
有显示0.0.0.0:2181运行成功
Zookeeper 注意事项
- Zookeeper 客户端连接端口号我们配置为 2181 , 记得以后连接我们都将使用这个端口号。(运行Zookeeper 注册中心之后2181以及8080端口是会被占用的)
- Zookeeper 启动之后命令行窗口一直开着, 不要关掉这个 cmd, 记得要在 Dubbo 消费者和提供者运行之前就开启 Zookeeper。
接下来运行项目就行了
运行步骤:
- 保证Zookeeper 注册中心正常运行以及运行成功
- 运行provider项目
- consumer项目
最后要确保两个项目的端口不一样
#应用服务WEB访问端口
server.port=8082
项目启动成功之后访问localhost:(consumer项目的端口)/ 方法名
最后的最后三个项目的整体框架
idea如何合并项目可以查看我的其他博客👇👇👇👇
https://blog.csdn.net/chenkunNB/article/details/120321359?spm=1001.2014.3001.5501