在前一步上已经说明,组件脚手架的第一步就是构建注册中心,由于采用nacos,这些将直接放在配置文件中实现,不再单独搭建eureka。
spring nacos jdk各组件依赖版本推荐
Spring Boot,Spring Cloud,Spring Cloud Alibaba 版本选择说明以及整理归纳_乐之终曲的博客-CSDN博客
版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub
第一步 创建gateway父类项目parent——maven project,需要注意的,父类项目打包都是pom,而子模块打包都是jar,这一点在springcloud教程中已经说明。
加入springboot基础包,这是所有项目的基础依赖
还可以加入springboot 测试依赖
最重要的是springcloud依赖,一定要选择对版本号,这里选择Hoxton.SR9,对应jdk8
第二步 在父项目中,添加Alibaba系注册中心nacos,引入nacos依赖,该部分依赖全部在网关的parent父类项目上,作为公共依赖来使用。
有关nacos的官方文档参考Spring Cloud Alibaba
在dependencyManagement中引入Alibaba版本依赖
-
<!-- SpringCloudAlibaba -->
-
<dependency>
-
<groupId>com.alibaba.cloud</groupId>
-
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
-
<version>${spring.cloud.alibaba.dependencies.version}</version>
-
<type>pom</type>
-
<scope>
import</scope>
-
</dependency>
在dependencies中引入nacos服务治理发现jar包
-
<!-- nacos注册发现 注册中心-->
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-
</dependency>
完整的pom文件如下:
-
<project xmlns=
"http://maven.apache.org/POM/4.0.0"
-
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-
<modelVersion>
4.0
.0</modelVersion>
-
<groupId>gateway-parent</groupId>
-
<artifactId>gateway-parent</artifactId>
-
<version>
0.0
.1-SNAPSHOT</version>
-
<packaging>pom</packaging>
-
<name>gateway-parent</name>
-
<description>gateway-parent 网关项目父类项目,总理网关管理</description>
-
<modules>
-
<
module>gateway-manage</
module>
-
</modules>
-
<!--springboot基础包,继承父,可不必,如果确实要用,必须跟下文的spring版本一致,否则报错 -->
-
<parent>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-parent</artifactId>
-
<version>
2.0
.3.RELEASE</version>
-
<relativePath />
-
</parent>
-
<!-- 在 properties下声明相应的版本信息,然后在 dependency 下引用的时候用 ${} 就可以引入该版本 jar 包了 -->
-
<properties>
-
<!-- 编码 -->
-
<project.build.sourceEncoding>UTF-
8</project.build.sourceEncoding>
-
<project.reporting.outputEncoding>UTF-
8</project.reporting.outputEncoding>
-
<!-- jdk -->
-
<java.version>
1.8</java.version>
-
<!-- SpringBoot、SpringCloud、SpringCloudAlibaba三者的版本最好匹配 -->
-
<!-- SpringBoot -->
-
<spring.boot.dependencies.version>
2.3
.2.RELEASE </spring.boot.dependencies.version>
-
<!-- SpringCloud -->
-
<spring.cloud.dependencies.version>Hoxton.SR9</spring.cloud.dependencies.version>
-
<!-- SpringCloudAlibaba -->
-
<spring.cloud.alibaba.dependencies.version>
2.2
.6.RELEASE </spring.cloud.alibaba.dependencies.version>
-
</properties>
-
<!-- 依赖 jar 包版本管理的管理器 -->
-
<!-- 如果 dependencies 里的 dependency 自己没有声明 version 元素,那么 maven 就此处来找版本声明。 -->
-
<!-- 如果有,就会继承它;如果没有就会报错,告诉你没有版本信息 -->
-
<!-- 优先级:如果 dependencies 里的 dependency 已经声明了版本信息,就不会生效此处的版本信息了 -->
-
<dependencyManagement>
-
<dependencies>
-
<!-- spring cloud版本号 -->
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-dependencies</artifactId>
-
<version>${spring.cloud.dependencies.version}</version>
-
<type>pom</type>
-
<scope>
import</scope>
-
</dependency>
-
<!--支持Spring Boot
2.1.X,匹配版本
2.0.x -->
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-dependencies</artifactId>
-
<version>${spring.boot.dependencies.version}</version>
-
<type>pom</type>
-
<scope>
import</scope>
-
</dependency>
-
<!-- SpringCloudAlibaba -->
-
<dependency>
-
<groupId>com.alibaba.cloud</groupId>
-
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
-
<version>${spring.cloud.alibaba.dependencies.version}</version>
-
<type>pom</type>
-
<scope>
import</scope>
-
</dependency>
-
</dependencies>
-
</dependencyManagement>
-
<!-- 独立依赖,不依托下方的jar包版本管理的管理器,同步版本管理器中的版本 -->
-
<dependencies>
-
<!-- springboot 测试依赖 -->
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-test</artifactId>
-
<scope>test</scope>
-
</dependency>
-
<!-- 引入nacos注册中心 -->
-
<dependency>
-
<groupId>com.alibaba.cloud</groupId>
-
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-
</dependency>
-
</dependencies>
-
<!-- 构建插件 -->
-
<build>
-
<plugins>
-
<plugin>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-maven-plugin</artifactId>
-
</plugin>
-
</plugins>
-
</build>
-
</project>
第三步 创建网关子模块,取名gateway,负责所有网关的转发、过滤、限流等业务
核心依赖有两个,Gateway的jar包和springcloud消费者启动包,注明:由于注册中心已经被nacos取代,所以用不到springcloud的注册中心服务包,其余所有的springcloud子模块用到的都是消费者包
依赖如下:
-
<!-- 添加Gateway作为网关 -->
-
<dependencies>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-gateway</artifactId>
-
</dependency>
-
</dependencies>
在启动配置文件bootstrap.yml中加入nacos注册中心的地址
-
# bootstrap.yml 先于 application.yml 加载,用来在程序引导时执行
-
server:
-
port: ${SERVER_PORT:
8888}
-
spring:
-
application:
-
name: gateway
-
cloud:
-
nacos:
-
discovery:
-
# 注册中心地址
-
server-addr: localhost:
8848
-
# 用户名,未修改时可省略该项
-
username: nacos
-
# 密码,未修改时可省略该项
-
password: nacos
-
config:
-
# 配置中心地址
-
server-addr: localhost:
8848
-
# 文件扩展名
-
file-extension: yml
在启动类上加入注解@EnableDiscoveryClient即可将该服务注册到nacos。
注意:此处没有用Eureka作为注册中心,所以不可以使用注解@EnableEurekaClient,该注解不适用于其他注册中心。共同点是都是能够让注册中心能够发现,扫描到该服务。
第四步 启动项目,关于启动类用springboot方式启动即可,即注解@SpringBootApplication和@EnableDiscoveryClient
@SpringBootApplication(scanBasePackages = { "person.henry.ou.bookkeeping.user", "person.henry.ou.bookkeeping.common" })
scanBasePackages 注解生效范围,表明spring托管的范围
打开nacos管理网站,
http://localhost:8848/nacos/index.html
输入用户名、密码,(默认均为nacos)可在nacos中发现服务:

点击详情可见:

按照图中IP:端口键入浏览器访问:
页面抛出404异常,说明项目正常了。

个人网站:ouhenry.top
转载:https://blog.csdn.net/gelangqing/article/details/128744403
