SpringBoot Nacos Oauth2 JWT 实现微服务搭建(二)
最近学习使用SpringBoot 搭建微服务,写此文章进行记录一下.
先来概述:
1.使用SpringBoot搭建基础服务
2.使用Nacos实现注册中心配置管理
3.配置Geteway实现统一路径入口
4.使用Ribbon实现跨模块调用
5.使用Oauth2进行Token认证
6.升级使用JWT令牌
(SpringBoot项目搭建略)
Nacos注册中心
- 上一章节已经实现Nacos在idea中启动.,并在项目中使用Nacos.本章节继续使用Nacos的注册中心.
搭建一个SpringBoot模块引入Gateway
如图:
父子相认
<modules>
<module>cloud-resource</module>
<module>gateway</module>
</modules>
在Gateway更新pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>cn.tedu</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.yz</groupId>
<artifactId>gateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>gateway</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
</project>
下面我们要进行application的配置
application.yml和application.properties都是在SpringBoot启动类启动时会自动运行的配置
server:
port: 9000
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置nacos的地址,默认就是8848,可以不写
gateway:
discovery:
locator:
enabled: true #是否与服务注册于发现组件结合,通过 serviceId 转发到具体的服务
lower-case-service-id: true # 忽略大小写服务器名称
routes: # 开始路由配置
- id: gateway-resource #路由配置的名称和具体服务无关
# resource-server路由的服务器的名称
# lb: 是 Load Balance(负载均衡)的缩写
uri: lb://resource-server
# 路由的路径设置
# 表示如果访问localhost:9000/image/xxxxxxx
# 那么就相当于访问resource-server服务中的内容了!
predicates:
- Path=/image/**
测试路径
http://localhost:9000/image/a.jpg
是否能够通过网关访问到静态资源服务器的资源
网关是一个比较特殊的子项目
这个项目中不去编写任何业务代码
各种网关的功能主要使用配置文件来实现
Spring-gateway的网关项目不能添加SpringMvc的依赖
它们是冲突的,SpringMvc默认是Tomcat服务器,而Spring-gateway依赖自带Netty服务器