一、Guns简介

Guns基于SpringBoot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!

在线演示地址:账号密码:admin/111111,地址:http://demo.stylefeng.cn

体验一下:

二 Guns涉及技术

基于SpringBoot,简化了大量项目配置和maven依赖,让您更专注于业务开发,独特的分包方式,代码多而不乱。

完善的日志记录体系,可记录登录日志,业务操作日志(可记录操作前和操作后的数据),异常日志到数据库,通过@BussinessLog注解和http://LogObjectHolder.me().set()方法,业务操作日志可具体记录哪个用户,执行了哪些业务,修改了哪些数据,并且日志记录为异步执行,详情请见@BussinessLog注解和LogObjectHolder,LogManager,LogAop类。

利用beetl模板引擎对前台页面进行封装和拆分,使臃肿的html代码变得简洁,更加易维护。

对常用js插件进行二次封装,使js代码变得简洁,更加易维护,具体请见webapp/static/js/common文件夹内js代码。

利用ehcache框架对经常调用的查询进行缓存,提升运行速度,具体请见ConstantFactory类中@Cacheable标记的方法。

controller层采用map + warpper方式的返回结果,返回给前端更为灵活的数据,具体参见com.stylefeng.guns.modular.system.warpper包中具体类。

防止XSS攻击,通过XssFilter类对所有的输入的非法字符串进行过滤以及替换。

简单可用的代码生成体系,通过SimpleTemplateEngine可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js,还可以生成Service和Dao,并且这些生成项都为可选的,通过ContextConfig下的一些列xxxSwitch开关,可灵活控制生成模板代码,让您把时间放在真正的业务上。

控制器层统一的异常拦截机制,利用@ControllerAdvice统一对异常拦截,具体见com.stylefeng.guns.core.aop.GlobalExceptionHandler类。

页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码。

三、Guns项目模块说明

/src/main:

java 源文件 Java程序的

cn.stylefeng.guns

config 配置中心 所有的配置文件

datasource 数据库相关配置

properties 系统的相关配置信息

web 整个项目的配置 swagger beetl shiro配置 等

core 核心代码所在的包

aop 自定义Aop的实现 基于Aop实现日志记录、基于Aop实现权限的校验

beetl 针对beetl模板引擎的操作

common 功能模块

自定义注解

modular 核心模块对应的代码

resources 资源文件

webapp 页面 静态、jsp等

guns框架字典取值_10分钟搞定Guns快速开发平台相关推荐

  1. guns框架字典取值_guns框架使用日记

    如果要使用日期类型 需要在html最下面script中写入 laydate.render({ elem:'#控件id' }); 添加数据功能 数据库id要为bigint类型 实体类的id添加下面注释 ...

  2. 值不值 | 三分钟搞定jpa?值不值!

    Hi ! 我是小小,今天是本周的第五篇,主要内容是jpa的入门,现在开始今日内容 数据准备 数据库使用的数据表设计如下 建表语句如下 SET NAMES utf8mb4; SET FOREIGN_KE ...

  3. zhlan--Python中的字典遍历方法 字典取值

    一.Python中的字典遍历方法: info = { 'name':'xiaoming', 'sex':'nan', 'age':20, 'id':1} info2 = { 'name':'hhh', ...

  4. python字典取值_python 字典中取值的两种方法小结

    python 字典中取值的两种方法小结 如下所示: a={'name':'tony','sex':'male'} 获得name的值的方式有两种 print a['name'],type(a['name ...

  5. 去除重复内容,就用这个EXCEL公式,1分钟搞定!(数组公式返回不重复的值,不适用透视表的情况下)

    去除重复内容,就用这个EXCEL公式,1分钟搞定! 一份高中录取名册中,上千条学生信息,生源校有七八十所,如何从表中轻松提取出不重复的生源校名单呢? 有人或许会这样做:复制录取名册中所有生源校到一个空 ...

  6. Python中字典取值常用的方法!

    字典是Python中比较常见的数据类型之一,它是一种可变容器模型,可以存储任意数量的任意类型的数据,而且字典中的每个元素由一个键和一个值组成,键和值之间用冒号分隔.本文为大家介绍一下Python中字典 ...

  7. python使用教程pandas-十分钟搞定pandas(入门教程)

    本文是对pandas官方网站上<10Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook .习惯上 ...

  8. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)

    前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...

  9. 三分钟搞定一个网页原型设计

    三分钟搞定一个网页原型设计 PS插件之Velositey(撒福利一波吼~) 做设计的大佬们应该很熟这个插件了,主要安利给平时不玩设计的后台们,以及不想花时间在做重复框架上的同学,更多的时间快留给打磨属 ...

最新文章

  1. axure 模板_《惢客创业日记》2019.09.03(周二) 用Axure管理项目流程
  2. Java3大框架的学习都是什么
  3. python并发与并行_python多进程,多线程分别是并行还是并发
  4. nginx nodejs环境配置_基于docker的nodejs、php开发环境,包含多种组合安装
  5. 再谈序列化推荐-集成item类目属性
  6. 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》
  7. JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
  8. 深度学习《CGAN新认识》
  9. Java类变量和类方法详解
  10. [收藏]ASP数据库操作类(上)
  11. 20160828小结
  12. 商业价值:谷歌眼中的搜索未来
  13. android权限名及其用途
  14. matlab2014b linux,matlab 2014b linux 肿么安装
  15. 计算机网络模拟器 mac,网易mumu模拟器mac版使用常见问题解决办法_3DM手游
  16. vim:the damn garbled of vim-devicons from nerdtree
  17. 先验 超验_先验 和 超验 名词解释
  18. C#实现斐波那契数列
  19. 【寒江雪】空间中的点线和面
  20. 计算机屏幕的显示分辨率与什么有关,事实:显示器屏幕尺寸和分辨率之间是什么关系?...

热门文章

  1. 深度学习在物理层信号处理中的应用研究
  2. 云图说 | 快速创建一个kubernetes集群
  3. 30岁+程序员职场攻略:找到自己的“职业锚”乘风破浪
  4. 【华为云技术分享】玩转小熊派BearPi(一)使用STM32CubeMX + HAL点亮一个LED
  5. 关于计算机硬盘属性对话框中,计算机文化基础练习题(2).docx
  6. PHP+MySql+PDO实现简单增加、删除、修改、查询
  7. 查看Ubuntu中的ip地址
  8. colab显示没有gpu的解决方法
  9. 经典神经网络 | 从Inception v1到Inception v4全解析
  10. 安卓PHP maker汉化,android 百度地图marker添加自定义视图