idea工具中搭建DUbbo的实例(超级详细)(上)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 之前一直做spring boot框架,mybatis做持久层,mysql做数据库,搭建环境时,各种问题,不是数据库没连上,就是mapper文件未扫描成功,这次就着搭建dubbo项目,总结一下。

之前一直做spring boot框架,mybatis做持久层,mysql做数据库,搭建环境时,各种问题,不是数据库没连上,就是mapper文件未扫描成功,这次就着搭建dubbo项目,总结一下。


一、环境准备

1、下载好zookeeper,进入conf目录将zoo_sample.cfg改名为zoo.cfg,然后将其打开配置dataDir和dataLogDir,找个空文件就行了,例如:

dataDir=D:\\azookerpersstudy\\data
dataLogDir=D:\\azookerpersstudy\\log

2、进入bin目录运行zkServer.cmd,启动成功后环境就好了,注意:搭建的项目能否运行成功的前提必须zookeeper处于启动状态,它相当于spring cloud中的eureka注册中心,我们的provider和custumer会在zookeeper上注册。


3、我们会创建三个项目,一个作为公共项目,提供基础,打成jar包install进本地仓库,供另两个项目provider和coustumer引入依赖。

二、公共项目操作

在idea中创建一个maven项目(不是spring项目),注意提供实体类和接口。

1、在bean层创建实体类,实体类会在服务之间调用,必须以流的形式,实现Serializable,同时生成set,get方法。

public class User implements Serializable {
    private int uid;
    private String uname;
    private String upwd;
}

2、service层创建接口

public interface UserService {
    public String getUserNameByUid(int uid);
}

三、内容提供者操作

1、在provider中调用数据库,所有需要引入mabatis和mysql依赖,同时为了调用实体类和接口需要引入公共组件,dubbo项目需要引入其依赖。当然还有web依赖,只展示dubbo组件依赖和公共组件依赖如下:


(1)公共组件依赖,是第一个项目中install到本地maven仓库的jar包。

        <dependency>
            <groupId>cn.bdqn.doubbe-common</groupId>
            <artifactId>doubbe-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

(2)dubbo引入的是阿里的依赖

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

2、配置applicaion.properties文件

(1)dubbo的配置,protocol.port的端口与custumer一致,否则会报错,我就是在这儿错了半天。,同时注册中心的端口一定要与本地打开的zookeeper地址一致。

#项目端口
server.port=9780
#服务提供者所暴露的协议配置信息
dubbo.protocol.port = 20880
#项目名
dubbo.application.name=dubbo-provider
#dubbo扫描的service层
dubbo.scan.base-packages=com.bdqn.doubbleuserprovider.service
#dubbo在zookeeper的注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

(2)mysql数据库配置,用户名,密码一定不要错了。

spring.datasource.url=jdbc:mysql://localhost:3306/insurance?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

(3)配置.xml文件路径,这个路径用我们mybatis的xml必须一致,不配置会报Invalid bound statement (not found);

mybatis.mapper-locations=classpath:com/bdqn/doubbleuserprovider/mapper/*.xml

3、mapper的UserDao和UserMapper.xml配置

(1)UserDao的内容与公共组件中的Service的接口一致对应。

    /**
     * 从数据库查询姓名
     * @param uid
     * @return
     */
    public String getUserNameByUid(@Param("uid") int uid);

(2)xml文件如下:namespace要与dao对应,相当于id值,该查询要有resultType,没有就报错了,我在这儿也踩了。

<?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.bdqn.doubbleuserprovider.mapper.UserDao">
    <select id="getUserNameByUid" resultType="String">
        select uname from user where uid=#{uid};
    </select>
</mapper>

4、service层在provider中只写实现类就行了。

(1)@Component声明为组件。

(2)@Service注解来自dubbo,它的interfaceClass值表示来自哪个common接口。

@Component
@Service(interfaceClass = UserService.class)
public class UserServiceImpl implements UserService {
    @Autowired
    UserDao ud;
    @Override
    public String getUserNameByUid(int i) {
        return ud.getUserNameByUid(i);
    }
}
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
6月前
|
Java 内存技术
IDEA工具debug的小技巧
IDEA工具debug的小技巧
69 0
|
Arthas Dubbo Java
Alibaba Java诊断工具Arthas查看Dubbo动态代理类
Alibaba Java诊断工具Arthas查看Dubbo动态代理类
107 0
|
3月前
|
SQL 存储 关系型数据库
IDEA中居然有碾压Navicat的数据库管理工具
【8月更文挑战第12天】IDEA中居然有碾压Navicat的数据库管理工具
178 3
IDEA中居然有碾压Navicat的数据库管理工具
|
11天前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
17 4
|
6月前
|
Dubbo Java 应用服务中间件
性能工具之JMeter Dubbo 脚本开发
【5月更文挑战第13天】性能工具之JMeter Dubbo 脚本开发
82 3
性能工具之JMeter Dubbo 脚本开发
|
2月前
|
Java 应用服务中间件 Spring
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
|
3月前
|
Java Maven 容器
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
|
程序员
【工具使用】Intellij IDEA 自动清除无效 import 包 和 清除无效 import包 的快捷键
【工具使用】Intellij IDEA 自动清除无效 import 包 和 清除无效 import包 的快捷键
1393 0
|
5月前
IDEA启动多个实例
IDEA启动多个实例
|
5月前
|
分布式计算 资源调度 Java
Scala+Spark+Hadoop+IDEA实现WordCount单词计数,上传并执行任务(简单实例-下)
Scala+Spark+Hadoop+IDEA实现WordCount单词计数,上传并执行任务(简单实例-下)
53 0

热门文章

最新文章