项目集成原创
# 项目集成
提示
Snapper Cloud(以下简称Snapper) 基于Spring Cloud 和 Spring Boot构建,依赖MyBatis-plus,当前仅支持MySQL数据库,项目也在不断扩展中
# 摘要
本章主要介绍基于Spring Boot的项目如何集成Snapper Cloud框架以实现授权微服务和网关微服务的集成,同时在业务微服务实现权限相关功能。
Snapper权限集成包含三个部分
- 集成权限微服务 该模块已包含在Snapper项目中,开箱即用,只需要添加依赖包及简单配置即可
- 集成网关微服务 该模块已包含在Snapper项目中,开箱即用,只需要添加依赖包及简单配置即可
- 集成业务微服务 是用户的业务模块,可以创建多个业务微服务,集成方式相同(通过SPI方式集成)
# 微服务说明
提示
每个微服务模块需要在pom.xml模块中配置启动类的完整路径,否则打包运行时会失败!
微服务项目集成请参考snam-boot (opens new window)项目,以下以snam-boot为例进行项目集成说明
该项目有如下几个模块
- snam-authority 为授权模块,包含授权的核心功能,snapper已封装,开箱即用
- snam-authority-api 为业务调用权限功能相关的feign(OPEN-FEIGN)依赖,项目采用SPI + FEIGN方式实时调用authority模块获取权限信息
- snam-gateway 为网关模块,基于spring gateway,snapper已封装,包含授权拦截,转发等功能
- snam-business 为业务微服务示例模块,主要用来说明如何集成权限功能
# 权限微服务
提示
属性配置中redis.username 如果是无用户模式,请填写default,默认用户名为default!
# 授权目录
# 属性配置
# 配置文件
# 网关微服务
# 说明
所有请求都需要经过网关模块进行权限验证并路由转发,是必须的模块。
网关模块项目构建分如下几个步骤
- 在main下创建JAVA目录,并且创建GatewayBootstrap启动类,具体配置参考网关项目配置
- 在pom.xml中依赖snapper-gateway-starter, 在spring-boot-maven-plugin指明启动类的全路径
- 在resource目录下的bootstrap.yml配置routes路由信息,根据具体项目进行自定义配置
- 在env包中对应的环境配置文件中进行配置,主要包括端口配置、环境配置、路由的模块地址,如果是开发环境本地调试请参考env-dev.properties配置文件
- 初始化Bean配置,请参考config目录下的snam-gateway-configuration,各filter介绍请参考网关层扩展点
# 过滤器扩展点
其中G1、G12、G13在bootstrap.yml中配置,G10为预留配置可以和G3共用一个配置,G14已集成到starter包中无需配置,如果不需要HMAC的权限认证,不需要初始化G7G8,具体可参考 SnamGatewayConfiguration 内容
# 网关目录
同权限微服务目录结构。
# 属性配置
# 配置文件
# 业务微服务
# 说明
业务模块为用户自定义的模块,项目中一般按照业务拆分创建多个自定义的业务模块,此处以一个为例(snam-business),项目相关配置需要注意以下几步
- pom.xml中需要添加相关依赖,尤其是snam-authority-api的依赖,用于feign调用获取实时业务权限,其他依赖请参考snam-business中的pom.xml
- 配置环境配置文件(snam-boot中pom.xml所制定的当前生效的环境配置),包括端口、数据源等
- 添加启动类,在java源目录对应的包下创建Spring Boot启动文件,具体参考BusinessServerBootstrap
- 添加mybatis-plus mapper扫描位置(在启动类中)及model位置(在respouces/bootstrap.yml中)
- 实现SPI机制,创建spi包,创建服务类,实现BusinessAuthService接口,具体参考spi目录下DefaultSpiBusinessAuthService类
# 业务目录
提示
此处为建议目录,用户可以根据业务需求创建对应的目录!