开发环境
idea2021.2
jdk 11
springcloud Hoxton.SR9
springboot 2.3.2.RELEASE
nacos注册中心部署可参考上一篇文章
一、开始搭建环境cloudAlibaba
搭建父工程/公共模块
1.使用idea创建一个maven父工程(用来管理版本依赖,统一版本信息)
pom.xml配置信息
<properties>
<spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
<spring.boot.version>2.3.2.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR9</spring.cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<!--Spring Cloud Alibaba 版本管理器-->
<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>
<!--Spring Boot 版本管理器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--Spring Cloud 版本管理器-->
<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>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>pom</scope>
</dependency>
</dependencies>
</dependencyManagement>
如果需要还可以创建一个公共功能模块,在公共模块中引入都需要使用的依赖包,创建一个公共的工具类等方法。
如lombok、mysql连接包、fastjson、常用的通用工具类(子模块只需引入公共模块即可)
nacos集成生产者
一、在父模块下创建maven生产者子工程。
1.maven依赖管理将父工程设为我们开始创建的父工程,根据个人创建的父工程坐标而定
<parent>
<artifactId>alibabaCloud</artifactId>
<groupId>com.xjt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
二、在生产者子工程引入nacos、springboot相关依赖.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.xjt</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
其中common包为笔者创建的一个公共模块
- 手现将项目构建为基本的springboot工程。
- 添加nacos配置
配置信息如下
server:
port: 8082
spring:
application:
name: provider
cloud:
nacos:
discovery:
server-addr: localhost:8845
分别对应的是端口号、注册到nacos中心的服务名(必须保证唯一(服务调用会用到
))、nacos服务注册中心地址
- 配置完成后在主启动类上增加注解
@EnableDiscoveryClient
用来启用服务注册于发现
既然是服务提供者就需要提供一些接口或者服务给消费者使用。
我们可以创建一个测试接口,并启用工程,在nacos服务管理平台中就可以看到我们刚刚注册进来的服务。
到此。服务生产者构建完成!
nacos集成服务消费者
可以直接复制服务生产者工程
额外添加一个依赖(用于restful风格调用生产者接口)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 修改配置文件,服务应用名称。
- 创建一个配置类,在配置类中注入RestTemplate/或直接在主启动类使用
@bean
注解注入,并使用注解@LoadBalanced
,并且在主启动类增加注解@EnableFeignClients
启用feign
- 创建一个接口,并在接口类增加注解
@FeignClient
- 此方法是使用feign的方法调用生产者服务
使用restTemplate方式 - 创建一个类添加
@Component
注入到spring容器 - 注入RestTemplate
地址也可以修改为对应的IP地址端口号加接口路径。
调用的方法已经有了,我们再创建一个对外提供的接口用于测试,两个接口对应的两个调用方法的测试
消费者集成完成!
生产者与消费者测试
- 分别启动服务生产者与服务消费者。
- 我们访问消费者提供的两个接口看看能不能调用到生产者提供的方法。
成功调用!
基本的微服务工程搭建完成!