使用spring-boot+maven+dubbo+nacos实现基础服务调用【原创】【亲测】
md 现在网上全是复制粘贴的文章 慢慢摸索终于勉强实现了 这个作为我初学的记录 里面有什么不对的地方欢迎指正
1.2 进入项目后点击此处进入项目设置
1.3 点击此处创建一个父模块 我这里是直接next 因为创建的目录很干净 没有springboot自带的配置和一些文件
1.3.1 一个模块创建完成 开始创建它的子模块
1.3.2 继续创建模块
1.3.3 这里可以选择父模块 其他模块一样如此不再重复赘述
1.4 最后构建完应该是这样的
1.4.1 从父模块pom.xml文件开始添加依赖
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<dubbo.version>2.7.8</dubbo.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
<spring.cloud.alibaba.version>2.2.2.RELEASE</spring.cloud.alibaba.version>
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
</properties>
<!--全局配置 这样它的子模块就不用指定版本了 方便统一管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot 依赖配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Apache Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-bom</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1.4.2 进入子模块provider的pom.xml文件添加依赖 另外一个consumer一样如此 ps:其实这些依赖可以统一放在公共模块中
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 接口依赖 注意名称-->
<dependency>
<groupId>org.example</groupId>
<artifactId>demo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- nacos服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- dubbo依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>2.7.8</version>
</dependency>
</dependencies>
1.4.2 在consumer/provider模块中创建springboot启动类 注意目录结构位置
1.4.3 依赖加载完成后可以开始配置服务发现和服务注册配置了
server:
port: 8080
# 这里是发现服务的配置 白话就是 让这个provider服务在xx:8848注册中心命名空间为test里找
spring:
application:
name: provider
cloud:
nacos:
discovery:
server-addr: xx:8848
namespace: test
# 服务provider在xx:8848里注册自己并把命名空间设置成test
dubbo:
application:
name: provider
registry:
address: nacos://xx:8848
parameters:
namespace: test
# 这里我的理解的是 使用哪种协议进行暴露服务
protocol:
name: dubbo
port: -1
# 开启时不检查有没有能用的服务
consumer:
check: false
这里的消费者和服务者配置一样 因为一个服务者也可以是一个消费者
1.4.4
在消费者服务(consumer)中创建controller 使用@DubboReference 注解进行依赖注入
这个接口(HellService)统一放在api模块中
1.4.5
这里是服务者(provider)实现类 如果说调用的方法入参是对象 记得进行序列化
1.4.6
记得在服务者(provider)中需要指定一下实现类的位置
1.4.7
开启两个服务 在nacos中可以看到两个服务都进行注册
上面两个是服务点击【详细】可以进行下线操作
下面是两个服务对接口的定义 用于匹配接口
最后调用consumer的controller进行测试