架构特点、安全方面、为什么好、我们的优势
# 一、架构特点
以 Spring Boot 2 or 3 为基础,Maven 多项目依赖,模块分项目,松耦合,方便模块升级、增减模块
具有模块化的数据库自动升级程序,当升级模块代码时,同时自动更新对应模块的数据库升级 SQL 脚本
功能授权模块灵活,按钮级别,支持 单点登录、第三方登录,丰富的扩展模块,简单 yml 配置即可实现
支持多数据源,深入 MyBatis 底层事务,从 DAO 层切换多数据源,方便快捷,彻底的解决必须从 Controller 里切换数据源的麻烦。并且支持,分布式事务,跨应用级别的事务,简单 yml 配置实现
数据表主键优化,如分类科目表,采用有意义的主键方式,让客户去自定义,减少后期运维维护成本
独创 @Table 注解(优于MyBatis-Plus,也可共存)在 MyBatis 基础上 Dao 层封装:
- 自动生成增删改查语句,支持联表查询,无需在 mapper.xml 里写基础 SQL,减少开发和维护成本
- 列表查询条件通过实体自动生成,不用您写各式各样的 *Wrapper、手写字段名、if判断查询条件等
- 所有列 @Column 定义均放到类头,而不是分布到各个属性或方法上,非常好,主要是有如下原因:
- 一是,放到表头的好处是,可一览熟知该实体类对应的物理表结构是什么样,开发者思维从物理表结构到对象的映射转换,都是基于物理表结构的,减少后期代码分析的维护成本,@Column 指定物理字段名,而不是指定类上的属性名,也是这个原因;
- 二是,生成的 SQL 和查询条件,可定义列的排列顺序,方便核查定义,优化查询,提升性能;
- 三是,方便 @JoinTable 关联表和其它扩展信息的设置,如果分布到类的属性上就不太好管理列
- 解决 80% 的基础 SQL 编写,后期维护增减字段方便,只需修改该数据和界面即可
数据权限,数据行级别权限控制,配置化完成权限控制:
- 不仅仅是角色范围控制数据权限,颗粒度可细化到每个人员的身上
- 可自定义第三方数据权限,不仅仅是部门和公司,您可以扩展,如:地区,栏目分类,商品分类
- 无需让您多写代码,根据界面化配置规则,通过代码简单调用,即可实现复杂的数据权限控制
- 拥有的权限和管理的权限划分,方便不同人员岗位权限区分(专为管理员独有的设计)
- 支持控制业务范围,根据功能划分权限,有的可以看本部门的,有的可以看本公司的数据
- 支持跨应用、跨数据库、跨进程的微服务级别的数据权限控制
视图解析模板语言,为什么选择 Beetl (采用 JS 语法):
- 它性能非常好,相比 Thymeleaf 好太多,甚至比 JSP 都快上 2 倍,入门也简单很多
- 它易于模块化,分布式应用,html 格式的文件,可以放到各个模块 jar 包里
- 它易于扩展,非常方便的去自定义 form 标签,函数,格式化数值、支持 Layout 等
- 最重要的是:它学习成本非常低,其实就是 js 的语法,如果会 js,则 Beetl 也就会使用了
- 一般在前端开发周期中,可能会一半以上的时间,去写界面,调布局,做出来的界面还非常不好看,
- 我们针对这个目的,去封装了前端各种组件,各种函数方法,
- 让您使用简单的组件,调用复杂的功能,让您只去关注业务;
分离版采用 Vue3、Vite、Ant Design Vue4 最先进的前端技术栈,封装高效 Form 和 Table 组件
# 二、更多特点
- 代码生成工具:界面化操作简单,可同时生成前端代码和后端代码,可自动创建业务模块工程和 Cloud 微服务模块工程,支持多数据源(常见模板包括:单表、主子表、树表、Vue模板、Cloud微服务等模板,支持自由扩展通用业务的代码生成模板)
- 缓存监控管理:提供管理界面,采用 J2Cache 二级缓存技术(Caffeine + Redis)支持快速切换为 Redis 缓存,支持集群 Session 和系统缓存共享,二级缓存技术有效的解决 TCP 网络速率瓶颈
- 服务器状态监控:查看 CPU,内存,JVM,磁盘信息等。方便运维人员分析系统负载情况,可增加预警
- 会话过期时间管理:支持不同的设备采用不同的过期时间;支持单独设定匿名会话超时,有效的减轻服务压力
- 支持 SaaS 多租户模式:每个租户数据通过 corp_code 字段进行分离,数据互不干扰、同时 3 种方式,包括:共享表、分模式、分库 等,并支持字典等基础数据租户共享。
- 支持 Spring Cloud 架构:分布式,微服务,最小化内核,统一配置中心,统一授权认证中心
- 树结构的独特设计:提高运维、数据分析、优化查询
- 多用户类型支持:员工、会员、专家、往来单位等
- 丰富的内置功能:用户权限、数据权限、系统管理
- 定时任务在线配置:界面化生成 cron 表达式,支持集群环境自适应,调度日志监控
- BPM 业务流程模块:基于 Flowable,中国式工作流、支持退回、自由流、会签等高级应用
- 在线预览系统:文件管理、在线预览图片、文档、文本、视频等格式
- 消息推送:APP、短信、邮件、微信,您无需了解消息是怎么发送出去的,只需了解消息发送接口即可
- 多语言支持:页面标签、字典菜单、数据国际化(中文、英语、日语等)中文key方便后期维护
- 集成云存储:已支持 阿里云OSS、腾讯云COS、七牛云、MinIO,并提供接口灵活扩展其它存储
- 可视化数据大屏:提供界面设计器,通过拖拽方式,快速实现可视化数据大屏,大屏轮播等
- 方便与第三方系统对接:提供移动端接口、第三方系统调用接口,轻松实现授权认证、数据调用(支持 json、xml 等格式)
- 文件上传组件:支持分片上传,断点续传下载,上传文档排序、预览(自动化浏览器支持格式转换)、图片压缩等
- 访问日志:系统访问留痕的一个日志记录,根据菜单配置规则,自动记录,无需写注解的麻烦
- 表单修改前后的历史留痕:差异数据分析,新值和旧值比较,较大文本展示差异数据结果。
- 在线查询在线人员,强踢在线账号
- 支持国产化软硬件和国密算法
- 提供丰富的在线文档及案例
# 三、安全方面
系统采用 Java 语言开发,具有卓越的通用性、高效性、平台移植性和安全性(适应全行业的软件)
分层设计层次清楚,低耦合,各层必须通过接口才能接入并进行参数校验,保证数据操作的安全
双重验证,用户表单提交双验证:包括服务器端验证及客户端验证,防止用户通过浏览器恶意篡改(如不可写文本域、隐藏变量篡改、上传非法文件、用户角色越级授权等)避免客户端跳过验证直接操作数据库
安全编码,用户表单提交所有数据,在服务器端都进行安全编码,防止用户提交非法脚本及SQL注入获取敏感数据,确保数据安全
密码加密,登录用户密码进行SHA1散列加密,此加密方法是不可逆的。保证密文泄露后的安全问题
强制访问,系统对管理端链接都进行用户身份权限验证及权限,防止用户直接获取资源
数据库密码及其它安全密钥自动加密配置(只需配置参数即可实现,无需使用复杂的秘钥生成功能)
MyBatis 参数采用安全接受,特殊操作都必须经过 SQL 安全过滤,杜绝 SQL 注入问题
所有请求参数获取,均通过 XSS 跨站脚本过滤方法,杜绝 XSS 问题
乐观锁简单实现,避免一条数据多人同时操作时的数据覆盖,提高数据安全性
通过 yml 简单配置,轻松解决 JS 是否允许跨域操作,自适应跨域情况
身份认证:
- 登录失败多少次后显示验证码
- 登录失败多少次后锁定账号及锁定账号时间
- 登录账号密码可加密后再提交后台
- 同设备是否允许账号多地登录
密码策略:
- 初始密码修改策略,提醒或强制用户修改初始密码
- 账号密码修改策略,多长时间内未修改,则提醒或强制修改密码
- 开关控制密码修改多少次内不允许重复,验证与上次或前几次的密码是否相同
- 开关控制账号密码修改最低安全等级,很弱、弱、安全、很安全,四个等级,强制或提醒
- 密码校验包括:长度大于等于8、有大写字母、有小写字母、有数字、有特殊字符
- 等级验证规则:满足1个是很弱,2个是弱,3或4个是安全,5个都满足是很安全
权限审计:
- 账号密码审计(未修改初始密码、使用简单密码、定期未修改密码、长期未登录、未设置密保、以上全部、审计结果导出)
- 菜单权限审计(根据菜单及权限查询,都有哪些用户)
- 用户权限审计(根据用户查询,都有哪些菜单及权限)
安全审计:
- 操作记录系统的接入日志、修改日志、查询日志、登录登出日志、操作IP等
- 能够详尽记录每一次用户行为,每次提交的前后数据进行对比,分析出差异数据,新旧值比较
- 使每一步操作有据可循,实时记录系统数据安全状况,精准识别企业异常访问和潜在威胁的源头
- 支持涉密系统的三员管理配置,互相牵制权限策略、三员分立,增强安全审计工作
登录提交信息加密(支持 DES 加密、Base64加密等)
支持设置获取客户端IP的Header名称,防止IP伪造
支持设置允许的请求方法设定(如:仅允许 GET、POST 请求)
是否允许账号多地登录,如果设置为false,同一个设备类型的其它地点登录的相同账号被踢下线
是否允许多账号多设备登录,如果设置为false,其它地点登录的相同账号全部登录设备将被踢下线
是否允许刷新主框架页,如果设置为false,刷新主页将导致重新登录。如 银行系统 个人首页不允许刷新
是否允许嵌入到外部网站iframe中(true:不限制,false:不允许)
是否允许跨域访问 CORS,解决 Cookie 跨域访问问题
是否允许跨域访问时 CORS,可以使用的方法和响应头(如:仅允许 GET、POST 请求)
是否允许接收跨域的 Cookie 凭证数据 CORS 设置
是否允许的网站来源地址,不设置为全部地址(避免一些跨站点请求伪造 CSRF)
是否在登录后生成新的Session(默认false)安全系数更高的系统设置
可设置多个允许的内部系统 IP 地址的白名单,否则拒绝访问
支持对敏感数据进行加密存储
支持密码国密加密算法
# 四、用户界面
- 清爽的平面化界面设计风格,精细,更加美观、高端、大气、上档次
- 支持手机或平板访问,响应式样式、响应式布局,根据屏幕分辨率自适应控件布局
- 无刷新设计,除了进入功能页面和新页面,其它情况下全部采用 Ajax 交互,优化体验和性能
- 支持一键换肤,只需在 yml 里修改下主题名称即可快速切换整个UI的风格,不仅仅是色调和样式,布局也可改变。支持自定义扩展项目独有的主题样式风格
- 优化用户功能操作,大众思维模式,功能清晰,更加贴切和友好
全栈版本
- 采用比较简单易学、性能最好的 Beetl 模板引擎,它的优点很多,大家可自行查阅看看,这里不多说了
- 封装 Beetl UI 通用组件,简单实现基本表单控件、树选择,列表选择,文件上传,等等,总之是简化开发
- 数据表格 jqGrid 组件封装,自动完成分页、排序、列宽、多表头、子表、编辑表、等
- 支持前后分离应用,方便与手机 API 接口对接,Token 方式授权
- 支持 IE9+ 及其他任何浏览器
前后分离
- 基于 Vue 3、Vite、Ant Design Vue 4.0、TypeScript、Vben Vue Admin,最先进的技术栈。
- 较好的协作性,前后端开发人员分别专注于各自的领域,减少了彼此的依赖和干扰,从而提高了开发效率和协作性。
- Table 列表和 Form 表单以数据驱动视图,极大简化了业务功能开发,数据存储结构更清晰化,更利于维护
- 完善的小功能组件的封装,为微小中大项目的开发,提供现成的开箱解决方案及丰富的示例
- 自由度较高,提供自定义插槽、渲染、事件等接口,多复杂的业务都可以自由扩展实现。
# 五、高可用性
- 支持一下技术手段,可以保证服务的连续性、性能和可用性,系统不中断24小时提供服务
- 集群化部署,在多个节点上部署同一个服务,当某个节点出现故障时,可以将请求自动转发到其它节点上
- 负载均衡,将客户端请求分配到不同的服务节点上,从而避免某个节点负载过重而导致服务不可用
- 故障转移,当某个服务节点出现故障时,需要自动将请求转移到其它可用的节点上,保证服务的连续性
- 自动扩缩容,自动扩缩容可以根据系统的负载自动增加或减少服务节点的数量,保证系统的性能和可用性
- 数据库部署,数据复制(主从、多主)和备份可以保证数据的可靠性和可用性
# 六、核心优势
JeeSite 非常易于二次开发,可控性高,整体架构清晰、技术稳定而先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。
JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点,多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要您学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。
JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制您去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。
大家都在用 Spring,也在学习 Spring 的优点,Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码,反而会对未来升级造成很大困扰,您说不是呢?这样的例子很多,所以不要纠结,我们非常注重这一点,JeeSite 也一样具备强大的扩展性。为你解决升级的困扰。
为什么说 JeeSite 比较易于学习?JeeSite 很好的把握了设计的 “度”,避免过度设计的情况。过度设计是在产品设计过程中忽略了产品和用户的实际需求,反而带来了不必要的复杂性,而忽略了系统的学习、开发和维护成本。
- 至今 JeeSite 平台架构已经非常稳定,我们持续升级,并不失架构的先进性。
- JeeSite 精益求精,用心打磨每一个细节,界面 UI 操作便捷,体验性好。
- JeeSite 是一个专业的平台,是一个可以让您使用放心的平台。
- 社区版基于 Apache License 2.0 开源协议,永久免费使用。