APP下载

基于SpringBoot快速开发平台的实现

2021-09-23李鹏

电子技术与软件工程 2021年12期
关键词:代码生成日志分布式

李鹏

(宁夏希望信息股份有限公司 宁夏回族自治区银川市 750001)

1 平台研发背景

随着信息技术的快速发展,软件系统的规模和复杂度也越来越高,特别是企业级应用平台的开发,涉及到的知识和内容非常广泛。为了使程序员能够集中精力完成系统的业务逻辑设计,降低软件开发难度,将信息系统中一些基础通用功能,比如:事物处理,安全性,数据流控制等都交给平台框架处理,从而解决软件开发中依赖复杂、编码复杂、配置复杂、部署复杂、监控复杂等难题。

2 平台定位

平台采用“强规范式编程”思想,高标准的设计和编码规范、高标准配置的开发环境;平台简化程序依赖、简化部署、简化配置、提供通用组件,是一个综合型框架,致力于J2EE应用的各层的解决方案,且保持开放性。

平台采用快速原型技术,有利于在一个项目内多人协同工作。重用代码大大增加,提高软件生产效率和质量。代码结构的规范化,降低程序员之间沟通以及日后维护的成本。让经验丰富的开发人员去设计框架和领域构件,而不必限于低层级的编程;参数化框架使得软件的适应性、灵活性增强。

3 平台主要功能

3.1 权限管理

权限管理包括:部门管理、用户管理、角色管理、菜单管理、模块管理、功能管理、操作管理、在线用户。

权限管理做为一个可插拔的子平台通过接口集成在开发平台中,也就是说,权限管理子平台不是必须的,当开发平台做为老旧系统的扩展系统集成到老旧系统中时,可去除权限管理子平台而使用原老旧系统的权限管理。去除权限管理子平台后,可被集成到原老旧系统中,这种可被集成的特性大大延长了老旧平台的生命周期。

3.1.1 部门管理和用户管理

部门为树型结构,以树型和子部门列表方式展现,部门设置有顺序、状态,可查看部门信息的详细内容,删除为逻辑删除;部门与用户为一对多关系,可调整用户的部门,可锁定和逻辑删除一个用户,可给用户重置密码,可给用户分配角色,也可对第三方应用接入人员分配接口组权限。

3.1.2 角色管理

平台采用RBAC(基于角色的访问控制)方式控制权限。角色分成多组,每个角色可添加多个用户,给角色分配可访问的菜单及功能,还能给角色分配访问数据的数据权限。

3.1.3 菜单管理和模块管理

平台增强的权限控制不仅前端控制(菜单、页面、按钮的显示),而且每个操作后台也做了权限控制及日志记录,防范非法操作。菜单管理(及模块管理)是权限管理的基础部分。

3.1.4 功能管理和操作管理

平台为了强化安全,细化了权限控制粒度,把权限控制做到了功能及操作的最细粒度。在角色分配功能中,虽然授权的是功能,真正后台控制的是功能下的操作。

3.1.5 在线用户

平台加强了系统监控和用户监控。在线用户功能可显示登录历史时长及以线用户,也可以强制在线用户下线。

图1:多数据源读写分离示意图

图2:代码生成流程

3.2 平台管理

平台管理有字典管理、参数管理、定时任务管理、任务历史查询、附件查询、公告管理、(阿里云)短信管理、短信历史查询、服务监控、服务器性能历史、Druid监控等。

3.2.1 字典管理

字典管理配置各模块使用的字典项。字典与表字段强对应。字典项给代码生成工具提供静态常量生成到模块实体中;字典项前端选择标签提供下拉列表选项。

3.2.2 参数管理

参数管理主要维护系统中所有配置参数。参数的新增由后台代码完成添加默认值,由参数管理修改功能来改变默认值。

3.2.3 分布式定时任务管理及运行历史

定时任务管理的底层由Quartz分布式定时任务组件完成,添加了管理界面和底层任务封装,运行期可扫描到所有的任务类方便维护。

3.2.4 附件管理

附件管理只完成附件查看、下载、删除功能,新增和逻辑删除功能由各业务模块完成。附件管理给管理员提供一个处理附件的窗口。

3.2.5 公告管理

公告管理是管理员对所有在线用户提供一些通知性的消息。当有消息时,在线用户在访问新页面时,会弹出提示消息。

3.2.6 短信管理、模板查询及短信发送历史短信管理提供管理员手动发送短信的机制。对接受众最多的阿里云短信服务,还可以查看阿里云上设置的模板、签名情况,还可以查看业务发送的短信历史。

3.2.7 服务监控

服务监控提供了分布式服务的健康情况以及服务所在服务器的情况,监控分布式服务状况,记录服务启动、停止等信息。

3.2.8 服务性能监控

服务监控的同时,也记录了服务器性能情况,给后续的服务器调优工作提供数据依据。

3.2.9 Druid监控

集成了Druid组件提供的性能监控,全面监控系统运行期各种性能指数,给排错、调优提供详细信息。

3.3 日志管理

日志管理子平台以接口方式集成到了开发平台,使用者可选择是否使用。因为日志数据量大,并且需要长久保存,每日备份数据量太大,所以使用者可选择日志输出的数据库及制定与系统主体不同的备份策略。

日志管理包含登录日志、操作日志、错误日志。日志管理给项目审计工作提供支持,也是等级保护评测要求的基本内容。

3.3.1 登录日志

登录日志记录用户详细的登录信息,提供给管理员或审计员做分析使用。

3.3.2 操作日志和错误日志

操作日志查询功能记录详细的操作信息,也记录了操作过程中的异常信息,结合全局异常处理微框架,提供“可查询的异常”功能。开发平台提供透明的操作日志记录和异常日志记录,提升开发平台的易用性。

3.4 分布式无状态架构

平台部署时是分布式无状态结构,以Redis或数据库保存会话状态,支持以子系统为单位的多数据源和读写分离,支持Web服务的动态水平扩展。

3.5 多数据源读写分离

平台本身是多数据源读写分离的环境,修改配置可为单数据库读写同源,不仅可用于小应用部署,更方便开发期使用,如图1。

3.6 代码生成工具

代码生成工具以数据库设计为驱动,动态生成CRUD代码,简化开发,如图2。

代码生成工具在平台强规范的约束下,会覆盖不可手动修改的基础代码,对可修改的代码给出参考代码供其复制粘贴。

在线代码生成工具设置好ID前辍和生成路径,在运行时直接把代码生成到运行环境中,重启服务后就可以使用。

3.7 查询封装

针对最易变的查询条件更改,封装查询(框架通过反射机制自动获取查询条件和类型)不仅能快速变更查询条件,而且不需要修改类代码。

封装的查询支持多种数据类型和查询类型,如:eq、ne、ge、gt、le、lt、like、likeLeft、likeRight、notLike、in、notIn、orderBy等。

3.8 集成被集成

平台使用OAuth2协议接入第三方应用,同时平台有被集成能力,可接入其他系统中。平台的权限管理(部门、用户、角色、模块等)是与平台主体脱耦的,去除权限管理后可被集成到其它有系统中。

3.9 分布式文件服务

文件存储(附件、图片等)是javaWeb系统不可或缺的一部分。分布式环境下的文件存储一般借助于OSS这样的文件系统。文件服务依靠自身来分布式文件存储,通过修改配置可动态切换文件存储的服务,也可以单服务运行,给中小微系统提供可扩展支持。

单服务方式适用于小微应用的部署。依赖少,完全掌握不受限;多服务方式适用于开发自测,每个开发电脑都是一个服务,完成分布式环境自测;多服务方式适用于大中型应用部署,依赖小,自控能力强;单服务可调整配置转变为分布式方式,应用扩展只需要修改配置文件。

3.10 分布式监控

分布式监控分为在线用户监控、服务监控、服务器监控。分布式环境下,用户由负载均衡服务器分散在各服务上,在线用户监控可登录任一服务监控到所有用户,并可查看用户登录历史以及强制用户下线。

3.11 接口管理

在权限管理和在线API接口文档的基础上,集合两者的优点,不添加额外服务及性能来提供系统对第三方接口的管理。

3.12 工作流封装

工作流是信息化平台不可或缺的一部分,本开发平台采用业务最常用的开源工作流Activity的升级版Flowable,版本为6.4.1。

工作流部分可分为流程设计、模型部署、任务待办、任务已办、流程业务、请假实例等。工作流的功能更多是提供给开发人员开发、调试、自测和二次开发使用,而非最终用户使用。工作流子系统采用分库、松耦合方式,提供了可调试的供二次开发使用的封装。

3.13 即时通讯

即时通讯专为工作沟通定制。采用WebSocket技术及使用LayUI-LayMI组件,形式类似于QQ或微信,并嵌入了公司组织结构,使企业内部沟通更容易。

3.14 其他小特性

3.14.1 国密加密集

开发平台添加了国密SM2、SM3、SM4等加密工具类,还在此基础上添加了加密版本号及限时策略,使加密工具也可以向下兼容式升级。

3.14.2 策略缓存

开发平台采用组合式缓存;分布式环境下使用Redis缓存;单服务采用EhCache缓存;平台自动测试Redis,如果连接失败则采用EhCache缓存。

3.14.3 动态表名

以MyBatisPlus动态表名功能为基础;实现动态表名接口,添加表名转换规则;由Spring的组件扫描注入方法注册。

3.14.4 数据权限

数据权限以树形部门结构为基础;部门表添加部门编号和父部门编号字段来支持数据权限的实现;角色管理中添加给角色“数据权限”功能,权限范围:仅本人、本部门、本部门及以下、自定义部门、全部;需要根据权限的业务表添加创建者ID、部门ID、部门编号、父部门串等字段。

3.14.5 选择列导出

开发平台采用了EasyPOI导入导出组件,添加了选择列导出功能;开发平台把选择列导出功能集成到代码生成工具中,成为基础功能。

4 结束语

本文提出的基于SpringBoot快速开发平台适用于各行业管理系统的快速搭建,对基于Web的应用平台开发具有先天的优势。开发人员无需掌握大量底层技术架构,大大减少项目开发工作量,缩短项目的实施周期,大幅提升交付率,节约了企业的研发成本和人力成本,使用平台快速实现用户需求。

猜你喜欢

代码生成日志分布式
一名老党员的工作日志
扶贫日志
Lustre语言可信代码生成器研究进展
游学日志
代码生成技术在软件开发中的应用
基于XML的代码自动生成工具
基于DDS的分布式三维协同仿真研究
西门子 分布式I/O Simatic ET 200AL
一种基于粗集和SVM的Web日志挖掘模型
基于关系数据模型代码生成器的设计与实现