lenos是一款快速开发模块化脚手架,采用spring boot2.0、spring、SpringMvc、mybatis、shiro、activiti工作流+swagger+ehcache+quartz+freemarker+layui技术进行开发,持久层集成tkmapper丰富简单数据交互,支持mysql/sqlserver数据源。
实现功能有:
系统管理:菜单管理、用户管理、角色管理
统一查询 pagehelper分页,查询调用BaseServiceImpl show model set数据,传入T,配合xml编写,即可自定义查询。
采用shiro技术,可配置化权限管理,精确到按钮(也可以是某一元素)功能分配
登录次数校验,超出定义次数后冻结一段时间账号
系统监控:系统日志、接口api、系统监控、可配置定时任务
前端可配置化定时任务。
采用swagger可视化出实时方法格式以及数据属性,采用阿里druid监控sql。
工作流程管理:完全实现模块化,无侵入。监听用户角色信息到引擎数据表中
流程管理:动态给发布流程分配角色,无需手动写死,灵活可变
模块列表:新建、编辑、发布流程,前端实现完全可配置化建立流程图
请假流程:提供一个请假示例,让您很快熟悉流程
待办任务:个人需要办理的流程任务
如果不喜欢工作流,可以直接删除 len-activiti模块
并在len-web/pom.xml、父 pom.xml 删除依赖以及模块,删除application.java 中对activiti的扫描即可完全删除工作流模块。
启动说明:
git clone https://gitee.com/bweird/lenosp.git mvn clean package mvn package java -jar len-web.jar
jdk:1.8
核心框架:spring boot 2.0.1.RELEASE
安全框架:Apache Shiro
工作流引擎:Activiti
数据库连接池:druid
视图框架:spring mvc
持久层框架:MyBatis
模板引擎:freemarker
缓存:ehcache
定时:quartz 2.3.0
前端页面:layui(博客将采用iview 前后分离)
如果一个页面只是一个按钮点击事件或者一个function的话,是没有必要进行模块化处理的。 而如果一个页面有两个按钮或者两个function的话,是需要进行考虑模块化处理了。 模块化不是必须的,它是业务膨胀的必然结果。 比如一个常见的表单提交: 表单验证 => 数据包装 => ajax提交 => 响应处理 => 显示对话框 无论上述的哪一个步骤,都不是一个function可以解决的, 将上述每一
Introduction When we say an application is modular, we generally mean it’s composed of a set of highly decoupled, distinct pieces of functionality stored in modules. As you probably know, loose coupli
一、何为易模块: 易模块实际上是一个特殊的易程序,它与普通的易程序相比,有以下特点: 1、必须具有程序名称(通过“程序”→“配置”菜单设置),此名称代表模块名称;(如图) 2、必须具有“_启动子程序”,此子程序负责进行易模块的初始化;(如图) 3、必须具有公开此易模块的对外接口,对外接口可以通过以下2种方法生成: A:新建一个子程序,然后把“公开”选中,在易模块中任何程序集中选中“公开”的子程序都
SOFABoot 从 2.4.0 版本开始支持基于 Spring 上下文隔离的模块化开发能力。为了更好的理解 SOFABoot 模块化开发的概念,我们来区分几个常见的模块化形式: 基于代码组织上的模块化:这是最常见的形式,在开发期,将不同功能的代码放在不同 Java 工程下,在编译期被打进不同 jar 包,在运行期,所有 Java 类都在一个 classpath 下,没做任何隔离; 基于 Spri
本文向大家介绍JavaScript的模块化开发框架Sea.js上手指南,包括了JavaScript的模块化开发框架Sea.js上手指南的使用技巧和注意事项,需要的朋友参考一下 Sea.js所有源码都存放在 GitHub 上:https://github.com/seajs/examples,目录结构为: 引入seajs主文件 seajs主入口文件(main) seajs依赖文件(index) 文件
快速开始 安装 $ go get github.com/labstack/echo/... 编写 Hello, World! 创建 server.go 文件 package main import ( "net/http" "github.com/labstack/echo" ) func main() { e := echo.New() e.GET("/", fu