企业级springboot项目架构模板V3.0,开箱即用

2023-11-03

此次 3.0 更新点:
1.加入文件服务(quick-storage)功能支持OSS、FTP存储(该服务支持以SDK的方式引入)
2.修复sentinel因path路径问题导致流控失效问题
3.修复word模板生成PDF文件工具类时首次生成时,图片生成没有成功写入FTP的问题,原因为临时文件路径问题。
4.修改部分类的包路径
5.auth服务下的各个表结构新增了 serve_name varchar(60) DEFAULT NULL COMMENT ‘所属服务名称’,通过该字段 auth服务可以注入多个项目得用户信息记录,需要在 application-auth.yml 中配置 serve_name和access_key;同时项目启动时会效验sys_serve表中是否存在该服务名称。


介绍

SpringBoot多模块架构,争对企业级开发设计,已集成认证功能、文档功能,开箱即用,并且不同子模块可以配置不同得数据源连接不同数据库,只需要在application-db中添加新的数据库即可(同时登录查看druid监控)。
技术栈: springboot + redis + shiro + swagger
git地址: [https://gitee.com/liujinxin_ark/quick-template/tree/relase-3.0] 后续版本不在使用该仓库
仓库迁移:https://gitee.com/schema-template/quick-template.git (由于码云近期维护,暂无法访问)


软件架构

SpringBoot多模块 + shiro实现权限认证 + redis实现单点登录控制(可控制账户同时在线人数)+ Swagger文档

2.0时新增了 quick-log-serve ,此次3.0增加了 quick-storage 文件存储服务,可以以SDK包的方式引入(注意3.1版本上才有quick-job模块功能,如需要请一致3.1版本下载)。
在这里插入图片描述


quick-auth-serve 工程

quick-auth-serve 为认证服务,包含系统认证、鉴权,以及系统得用户、角色、权限管理。

shiro相关信息配置可通过quick-config模块下得application-shiro.yml配置,如:令牌前缀、同一个帐号最大会话数、认证授权信息缓存等配置。

该对其他子模块提供了 ShiroUtil 类,通过该类获取当前登录用户信息。

注意:
如果需要关闭项目的认证鉴权功能,在 quick-config 工程下的 application-shiro.yml 关闭认证鉴权功能:

在这里插入图片描述



quick-log-serve 工程

quick-log-serve 为日志服务,包含系统日志访问接口。

该对其他子模块提供了 LogbackController 接口,通过该接口访问系统 html 和 txt 的Logback日志文件。
如:http://localhost:8082/log-server-api/logback/html/2022-03-24?accessKey=F9F09728BBC81DA9&level=info 可访问html日志信息记录

接口: /log-server-api/logback/{type}/{dateTime}?accessKey=F9F09728BBC81DA9&level=info
type参数:日志类型可选值html、txt
dataTime参数: 某一天的日志信息
accessKey参数:令牌(该接口不会参与到 quick-auth-serve 服务的认证鉴权,所以单独开发了这个接口)
level参数: 如果type参数为txt的话,该值生效。即访问的日志文件级别。

注意:
如果不要对外开发该接口,可在 application-log.yml 中禁用该接口。
加入了日志到数据库表中功能,记录请求和响应的信息,log服务只会记录需要鉴权的接口到表中,可在application-log.yml 中该功能。



quick-common 工程

quick-auth-serve 为常用的工具服务,包含提供redisClient、File操作、Word转PDF等工具类。



quick-config 工程

quick-condig 系统统一配置服务。

(1)每个子模块都有自己数据源配置,实现各个子模块连接自己的数据源,参考com.quick.config.datasource 数据源配置类 和 application-db.yml 配置文件,可访问 IP:端口/druid 访问数据源监控

(2)各个server模块,需要在 quick-config 工程中下的 application-system.yml 配置 request 前缀:

# 设置子模块请求前缀
request:
  prefix:
    auth_server: /auth-server-api
    log_server: /log-server-api
    base_server: /base-server-api

(3)系统配置了 sentinel 实现接口限流配置,项目启动后会自动注册到 sentinel 服务中,(自动注册配置类 com.quick.config.sentinel.SentinelConfig),即系统扫描所有接口,注册到 sentinel 服务(sentinel 程序在 control 目录下)。

注意:
如果需要关闭接口限流功能,可在 application-sentinel.yml 中关闭该功能。

(4)swagger配置,各个对外暴露的接口工程,都实现了swagger分组功能,配置类 com.quick.config.swagger.SwaggerConfig,项目启动后访问 IP:端口/doc.html
在这里插入图片描述



quick-base-serve 工程

该工程为一个案例工程,如项目中需要开发一个订单模块,可按照该模块创建。

注意:
不同的子模块需要在config-server工程中配置各自的数据源;
不同的子模块提供controller接口需要在config-server工程中配置各自的swagger配置分组
不同的子模块可自行配置 @RequestMapping 前缀,在quick-config工程中的 application-system.yml配置。



quick-web-serve 工程

该工程为启动工程,通过QuickWebApplication启动器启动项目。



control 目录

项目涉及到的其他服务,如:sentinel-dashboard-1.8.3.jar





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

企业级springboot项目架构模板V3.0,开箱即用 的相关文章

随机推荐

  • 升级vim到8.2以及配置vimrc

    liuzhicheng Huaqin sudo add apt repository ppa jonathonf vim Unofficial package for Vim Packaging files are based on lat
  • 关于PCB模拟地和数字地的处理

    在PCB布线时板子上可能有几个地的情况 比较差的傻瓜式做法就是直接铺铜 这种对于低速板或者对干扰不敏感的板子来讲还是没问题的 但是高速或者要求精密的板子就不可取 这时候就需要把模拟地和数字地隔离好 通常楼主的做法是把模拟的元器件和数电的元器
  • msys2中导入window环境变量

    配置环境变量 MSYS2 PATH TYPE inherit
  • 1、Ubuntu16.04编译安装llvm+clang

    Ubuntu16 04编译安装llvm clang 一 环境介绍 操作系统 Ubuntu 16 04 不是虚拟机哦 在虚拟机上做过无数次尝试 均以失败告终 LLVM Clang版本 3 6 Cmake版本 3 6 二 下载安装 1 下载源码
  • java评论功能怎么实现_评论功能的简单实现

    最近在写一个问答功能 类似于评论 几番找资料才有点感觉 主要是太菜了 为了加深印象就单独抽出来记下笔记 然后这篇写完就开始SpringBoot的复习了 1 说明 网上看到有三种类型的评论 按照笔者的理解记下了过程 可能理解错了 望大神指出
  • 哈希算法题(砝码&数量得到种数)

    现有n种砝码 重量互不相等 分别为 m1 m2 m3 mn 每种砝码对应的数量为 x1 x2 x3 xn 现在要用这些砝码去称物体的重量 放在同一侧 问能称出多少种不同的重量 注 称重重量包括 0 include
  • MySQL【DQL查询数据(最重点)】

    DQL查询数据 最重点 4 1 DQL Data Query LANGUAGE 数据查询语言 所有的查询操作都用它 Select 简单的查询 复杂的查询它都能做 数据库中最核心的语言 最重要的语句 使用频率最高的语句 4 2 指定查询字段
  • HTML、CSS、JavaScript:网页开发的三大利器

    JavaScript 让网页更加生动有趣 JavaScript是一种广泛应用于网页开发的编程语言 它可以让网页更加生动有趣 在本文中 我们将介绍JavaScript的基本概念和应用 帮助读者更好地了解这个强大的编程语言 JavaScript
  • 一文读懂高速互联的阻抗及反射(中)

    一文读懂高速互联的阻抗及反射 中 勘误 上篇中 电感的电抗叫做感抗 表示为 X L j C
  • 2017网易游戏测试工程师-实习招聘在线笔试题

    网易游戏测试工程师 一 A游戏又要开新服了 为了在短时间内冲排名 你得尽可能多地完成游戏任务 通过事先查攻略我们知道了所有的游戏任务 以及每个任务的时间窗口 一旦选定了做某个任务 在所选定任务的整个持续时间内只能做这个任务 且只能等到当前任
  • SpringBoot整合多数据源Redis

    SpringBoot整合Redis 其实方法跟单数据差不多的 这里给大家写一下 文章目录 SpringBoot整合Redis 多数据源整合 多数据源整合 一 完成配置文件 Spring配置 spring 资源信息 messages 国际化资
  • python atexit模块的使用

    python atexit模块的使用 模块的简介 atexit模块主要的作用就是在程序即将结束之前执行的代码 atexit模块使用register函数用于注册程序退出时的回调函数 然后在回调函数中做一些资源清理的操作 该模块其实是一个对 s
  • 寻找峰值

    LeetCode 寻找峰值 峰值元素是指其值大于左右相邻值的元素 给定一个输入数组 nums 其中 nums i nums i 1 找到峰值元素并返回其索引 数组可能包含多个峰值 在这种情况下 返回任何一个峰值所在位置即可 你可以假设 nu
  • Eclipse、AndroidStudio

    Eclipse ADT SDK AndroidStudio Android Plugin for Gradle gradle SDK
  • 【自然语言处理】最大熵马尔可夫模型

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于这部分的参考资料比较少 网上大部分资料重复且不完整 对于一些关键计算没有推导 所以这里我主要讨论几篇论文和讲义 但是这些论文和讲义之间也有些许差别 讨论的过程中我会加入自己的理解
  • 百度网盘下载提速,推荐3种亲测有效的方法

    凉透的下载工具 自从PanDownload事件之后 陆续出了很多第三方的度盘不限速下载神器 但是最后都凉了 这些第三方下载神器 都是个人开发者 即便有盈利也承受不起巨大的风险 甚至有款下载神器 用爱发电 流程是这样的 1 用户提交下载链接
  • 34门课改变人生——牛人自学计算机总结

    转载说明 在人人网上看到一个在美国学生物的硕士通过MOOC学习最终找到IT工程师工作的故事 非常励志 而且每门课都有很有价值的点评 经过作者本人同意转载到MOOC学院 如果各位有后续问题可以把他本人拉来答疑 转载正文 首先这只是我个人的总结
  • Java小细节

    一 result null 和 result isEmpty 有什么区别 在 Java 中 result null 和 result isEmpty 是两个不同的检查 分别用于不同的目的 result null 这个检查用于确定变量 res
  • 最大平均值子数组

    最大平均值子数组
  • 企业级springboot项目架构模板V3.0,开箱即用

    此次 3 0 更新点 1 加入文件服务 quick storage 功能支持OSS FTP存储 该服务支持以SDK的方式引入 2 修复sentinel因path路径问题导致流控失效问题 3 修复word模板生成PDF文件工具类时首次生成时