Guns简介_guns流程管理-程序员宅基地

技术标签: Guns  

1、Guns是什么?

Guns基于Spring Boot2,致力于做更简洁的后台管理系统。
Guns包含系统管理,代码生成,多数据库适配,SSO单点登录,工作流,短信,邮件发送,OAuth2登录,任务调度,持续集成,docker部署等功能,支持Spring Cloud Alibaba微服务。

2、Guns整合了哪些组件?

2.1、springboot

英文文档:https://spring.io/projects/spring-boot/
中文文档:https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/

2.2、shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
官网:https://shiro.apache.org/

2.3、mybatis-plus

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官网:https://mp.baomidou.com/#/

2.4、beetl

一款Java模板引擎。
百度百科给的定义:Beetl是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。
中文文档:http://ibeetl.com/guide/
官网:http://ibeetl.com/

2.5、flowable

一款工作流引擎,Flowable是Activiti原班主创人员从Activiti分离出来的一套工作流引擎,是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速、稳定的BPMN2流程引擎,易于与 Spring集成使用。
官网:https://www.flowable.org/

2.6、前端模板

EasyWeb,一款基于Layui的后台敏捷开发框架
官网:https://easyweb.vip/

3、Guns能帮我们做什么?

3.1、首先,Guns默认内置了10个系统模块,分别是:

  1. 用户管理
  2. 角色管理
  3. 部门管理
  4. 菜单管理
  5. 字典管理
  6. 业务日志
  7. 登录日志
  8. 监控管理
  9. 通知管理
  10. 代码生成

这10个系统模块包含了一个后台管理系统的基础功能,包括用户、角色、菜单、通知以及日志记录功能,并且代码生成功能能让我们后续的业务开发更加快捷。

3.2、其次,Guns的项目特点能让我们的开发更加灵活、简洁、易维护

  1. 基于SpringBoot,简化了大量项目配置和maven依赖,让您更专注于业务开发,独特的分包方式,代码多而不乱。
  2. 完善的日志记录体系,可记录登录日志,业务操作日志(可记录操作前和操作后的数据),异常日志到数据库,通过@BussinessLog注解和LogObjectHolder.me().set()方法,业务操作日志可具体记录哪个用户,执行了哪些业务,修改了哪些数据,并且日志记录为异步执行,详情请见@BussinessLog注解和LogObjectHolder,LogManager,LogAop类。
  3. 利用beetl模板引擎对前台页面进行封装和拆分,使臃肿的html代码变得简洁,更加易维护。
  4. 对常用js插件进行二次封装,使js代码变得简洁,更加易维护,具体请见webapp/static/js/common文件夹内js代码。
  5. 利用ehcache框架对经常调用的查询进行缓存,提升运行速度,具体请见ConstantFactory类中@Cacheable标记的方法。
  6. controller层采用map + warpper方式的返回结果,返回给前端更为灵活的数据,具体参见com.stylefeng.guns.modular.system.warpper包中具体类。
  7. 防止XSS攻击,通过XssFilter类对所有的输入的非法字符串进行过滤以及替换。
  8. 简单可用的代码生成体系,通过SimpleTemplateEngine可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js,还可以生成Service和Dao,并且这些生成项都为可选的,通过ContextConfig下的一些列xxxSwitch开关,可灵活控制生成模板代码,让您把时间放在真正的业务上。
  9. 控制器层统一的异常拦截机制,利用@ControllerAdvice统一对异常拦截,具体见com.stylefeng.guns.core.aop.GlobalExceptionHandler类。
  10. 页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44605704/article/details/96282925

智能推荐

网关和本机IP不同网段的上网办法_同一网关下ip不同网段-程序员宅基地

文章浏览阅读7k次。原贴:http://www.linuxeden.com/html/softuse/20090613/66175.html网关和本机IP不同网段的上网办法本机IP地址是 202.*.*.*netmask是255.255.255.192网关是 61.*.*.*两者不在同一网段。Windows下貌似很容易解决,直接设好IP网关即可,路由表会自动设好,Linux却不行。_同一网关下ip不同网段

计算机信息数字化基础_十进制-10的真值和机器数-程序员宅基地

文章浏览阅读2.4k次。八卦图与二进制的联想易有太极,是生两仪,两仪生四象,四象生八卦!计算机都涉及到哪些数制?二进制(Binary),八进制(Octal),十进制(Decimal),十六进制(Hexadecimal)二进制用于电脑识别十进制用于人来识别而八进制与十六进制就是用来协调人和计算机矛盾的进制二进制有极大的优势:易于物理实现,二进制运算规则简单,机器可靠性高,通用性强,可用于逻辑_十进制-10的真值和机器数

在HTML5中,边框的边距(margin)和填充(padding)通常是通过CSS来设置的,而不是直接在HTML中_htmlvss上边距框代码-程序员宅基地

文章浏览阅读2.8k次。在HTML5中,边框的边距(margin)和填充(padding)通常是通过CSS来设置的,而不是直接在HTML中。边框本身是由CSS的border属性定义的,而边距和填充则分别通过margin和padding属性来设置。你也可以分别设置每个方向的边距,如margin: 10px 20px 10px 0;(上10px,右20px,下10px,左0px)。例如,margin: 10px 5px;还要注意的是,虽然示例中使用了div元素来展示边框、边距和填充,但这些CSS样式可以应用于任何HTML元素。_htmlvss上边距框代码

手把手教你安装Jupyter Notebook(保姆级教程)_jupyter notebook安装教程-程序员宅基地

文章浏览阅读10w+次,点赞323次,收藏1.8k次。Jupyter Notebook安装教程_jupyter notebook安装教程

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_笔记本摄像头识别动作-程序员宅基地

文章浏览阅读7.5k次,点赞15次,收藏78次。“你比个手势,AI就识别出Emoji,浏览器上跑:已开源,推特2.8万赞”本文运行了尼克小哥的开源代码,其中有那么一点点坑吧。zxx让我把这个跑一下,跑是跑成了,但他没用上。尼克用的是TensorFlow.js,用IBM云上的GPU训练的,免费的k80,半小时训练时间,在IBM的annotations上准备数据标注手势图。作者写的教程,其实真的蛮手把手的,就是细心一点就好了。当然,我跑出来..._笔记本摄像头识别动作

磁芯存储器简介------顺便说说core dump的core是什么含义_磁芯存储器的理论-程序员宅基地

文章浏览阅读1k次。在前面的文章中, 我们说了存储器, 无非就是厕所的坑, 标志一个二值状态。 如果你愿意, 那么你可以用厕所的坑的组合来设计一个存储器, 照样可以存储你从岛国下载回来的电影, 只是, 需要太多这样的厕所坑, 不划算, 你我都没有那么多钱。既然用厕所的一个坑来做一个二进制bit位很浪费钱, 那我们来说说磁芯存储器, 看一张图:这就是磁芯存储器, 里面有64个..._磁芯存储器的理论

随便推点

[dp]POJ 3176 Cow Bowling解题报告_the cows don't use actual bowling balls when they -程序员宅基地

文章浏览阅读477次。题目: Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16077 Accepted: 10705 DescriptionThe cows don’t use actual bowling balls when they go bowling. They each take_the cows don't use actual bowling balls when they go bowling. they each take a number (in the range 0..99), though, and line up in a standard bowling-pin-like triangle like this:

【Android 练习】Intent 隐式启动_intent隐式启动-程序员宅基地

文章浏览阅读810次。MainActivity.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" ="http://schemas.android.com/apk/res/android" an.._intent隐式启动

flutter 环境搭建_flutter环境搭建-程序员宅基地

文章浏览阅读9.6k次,点赞4次,收藏54次。Flutter 是谷歌开发的一款开源、免费的,基于 Dart 语言的U1框架,可以快速在i0S和Android上构建高质量的原生应用。它最大的特点就是跨平台和高性能。Dart是由谷歌,在2011 年开发的计算机编程语言,它可以被用于Web、服务器、移动应用和物联网等多个领域。号称要取代JavaScript._flutter环境搭建

MySQL 大表优化方案-程序员宅基地

文章浏览阅读92次。点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目...

android 9.0 开机动画,Android bootanim开机动画启动流程-程序员宅基地

文章浏览阅读870次。1. system进程在启动过程中会调用SurfaceFlinger类的静态成员函数instantiate来启动SurfaceFlinger服务。启动过程中,首先创建一个SurfaceFlinger实例,此实例会被一个SP 指针引用。当一个对象被一个智能指针第一次引用的时候,该类的onFirstRef方法将被调用:void SurfaceFlinger::onFirstRef(){mEventQu..._android bootnim

[转]quick-cocos2d-x 从2.2.5升级到3.3的体会-程序员宅基地

文章浏览阅读431次。原文地址:https://my.oschina.net/ffs/blog/390275从quick 2.2.5升级到quick 3.3 final版本,我发现改动还是很大的,但是github上的文档只涵盖了很少的一部分,因此我在这里把自己升级中的一些注意事项罗列出来,希望能有所帮助。 首先,我们可以看看github上的文档,主要有如下部分: 下列函