JAD开发框架简介
版 本:1.0.1
拟制人: hechuan
1 前言
JAD旨在为程序员提供一个高效的自动化开发平台,它涉及互联网JAVA后台技术基础架构的方方面面,比如持久化技术,缓存,分布式远程调用与微服务等等。同时,它内置了大部分信息化系统中所需要的会员管理、权限控制、流程管理、cms内容管理、oa办公自动化等业务模块供业务开发人员直接使用。
目前项目已经在开源中国码云平台上开源,
代码地址:https://git.oschina.net/457049726/jad
eclipse插件下载地址:http://pan.baidu.com/s/1c2nGXfq
官网网址:http://www.openjad.com:8080
后台演示网址:http://demo.openjad.com:8080/a
后台演示网址:http://demo.openjad.com/a
后台用户名/密码:admin/admn
后台dubbo服务治理用户名/密码:guest/guest
1.1 定义、术语及缩写
缩写 | 英文全称 | 中文全称 |
JAD | Java Auto Develop | java自动化开发平台 |
|
|
|
1.2 文件修订记录
文件修订记录
版本修改记录 (A --- 增加 M --- 修改 D --- 删除)
当前版本 | 日期 | 修改位置 (图、表、章节) | A/M/D | 简单描述 (原因和修改简介) | 修改人 | 评审人 |
1.0.1 | 2017-05-11 | ALL | A | 建立 | hechuan |
|
|
|
|
|
|
|
|
2 JAD项目简介
2.1 项目简介
JAD集成jeesite、dubbo、kisso等多个优秀的开源项目,重构整合而成的高效,高性能的开源Java EE快速开发平台。以“小项目做的快、大项目做的好”为原则,提供快速的层次清晰的渐进式业务开发模式,功能强大。
JAD以Spring Framework为基础框架,以Spring MVC为模型视图控制器,在数据访问层上同时支持hibernaet、MyBatis及spring jpa,以Apache Shiro为权限授权层,以Activit为工作流引擎,在缓存方面,它同时支持Ehcahe、MemCache、Redis,开发团队可以跟据自身的技术特性,选择自己熟悉的技术组合作为自己的项目架构。
JAD可用于企业信息化领域,已内置企业信息化系统的基础功能模块,包括:权限组件、数据字典组件、核心工具组件、工作流组件、CMS内容管理、OA办工自动化、微信接口等。
同时JAD可用于互联网领域,自动生成rest ful风格的api文档,方便前后端联调。在架构上,JAD以“业务与逻辑相分离”为原则,做业务的只写业务代码,做架构的只负责架构。JAD不仅仅支持传统的单体项目架构,也支持分布式微服务架构,具有很强的扩展性与可移植性。业务开发方面,JAD提供高度可定制化的Eclipse插件作为可视化ide,开发人员可以跟据自已项目的特性定制适合自己项目的代码生成器,大大提高开业务开发效率。目前,JAD内置的代码生成器主要有:创建项目、生成CURD代码等等。
综上所述,JAD是快速完成项目的最佳基础平台解决方案,也是想学习Java平台的最佳学习案例。
2.2 项目特色
JAD项目集成多个优秀的开源项目于一体,功能强大,而且业务与逻辑似乎完全分离,可扩展性强。主要有以下特色:
2.2.1 采用业务与逻辑相分离的架构,具有很强的扩展性与可移值性。
各个业务模块之间相互独立,系统管理、cms内容管理、bpm工作流、oa办工自动化等模块之间耦合度很底。创建项目时,开发人员可以跟据自己的需求,任意选择不同的模块组合,且不需要的业务模块并不会出现在自己的项目代码中,代码干净清晰。
2.2.2 项目架构灵活,不仅支持传统的单体项目架构,也支持基于dubbo的分布式微服务架构。
本框架不仅仅支持传统小项目的单体架构,也支持大项目的分布微服务架构(基于dubbo)。而且不同架构之间只需要通过一些简单的配置,及调整一下各模块的依赖关系即可实现(无需修改任何业务代码)。
2.2.3 采用自主研发的Eclipse插件来实现项目创建和代码自动生成。
开发人员,可以通过安装本项目自带的Eclipse插件,通过可视化界面来初始化自己的项目,并可通过相关界面自动生CURD相关代码。
2.2.4 对常用的ORM框架进行了简单的封装和约定,同时支持hibernate、mybatis、spring jpa,并支持多表关联。
开发人中员可以跟据自己熟悉的ORM框架在hibernate、mybatis、spring jpa三者中任选一种,可跟据自己熟悉的ORM框架api写出跟某一特定ORM相关的dao代码,也可以按照本项目约定持久层规范写出可以同时支持hibernate、mybatis、spring jpa的dao(在这种情况下,用户并不需要修改任何业务代码,只通过配置即可在三者之间任意切换)。
2.2.5 对常见的缓存框架进行简单的封装,同时支持EhCache、MemCache、Redis等缓存引擎。
开发人员可以从EhCache、MemCache、Redis三者中任选一种或几种作为自己的缓存引擎。JAD对不同的缓存做了统一的封装,并提供了统一的api来访问缓存。而且,开发人员无需修改任何代码只需简单的配置一下,便可使项目在EhCache、MemCache、Redis三者之间进行切换。
同时JAD通过对Spring Cache的集成,提供了缓存操作相关注解,开发人员无需写缓存访问相关的逻辑代码,而通过一些简单的注解即可实现缓存操作。
2.2.6 权限认证方面,同时支持传统的认证方式,也支持可跨域的单点登录。
JAD对国内优秀的SSO框架kisso进行了集成,开发人员可跟据自己的需求选择使用,并同时支持多种认证方式(可支持统传的session、基于cookie的单点登录、基于加密cookie的跨域sso、基于统一认证中心的单点登录等方式)。
2.3 业务功能说明
从业务功能上讲,本框架提供的功能主要有以下方面:
2.3.1 基于角色的权限访问控制模块
采用流行的shiro实现在基于角色的权限访问,包括会员管理、角色管理、菜单管理、权限管理等子模块。
2.3.2 cms内容管理模块
本项目自带cms内容管理模块。
2.3.3 oa办工自动化模块
本项目通过集成activiti提供了工作流系统,作为oa办工自动化模块的流程引擎(开发中。。。)
2.3.4 微信接入模块
本项目实现了微信接口(开发中。。。)
2.3.5 其它功能模块
以上列出的是本项目自带的业务模块,其中权限管理模块和cms模块业务成熟度比较高。其它模块目前还没有完全完善,开发人员人可以自行完善。
同时,开发人员也可以通过Eclipse插件以创建项目的方式创建自己的业务模块。
以上各个业务模块之间相互独立,开发人员可以跟据自己的需要任意选择自己的想要的模块。并且可以以传统的单体项目架构方式集成各个个模块,也可以以微服务的方式分布式部署各个模块。
2.4 逻辑功能说明
从逻辑功能上讲,本框架提供的功能主要有以下方面:
2.4.1 提供可高度定制化的Eclipse插件来自动创建和配置项目及自动生成CURD业务代码
本项目自带一个可高度定制化的Eclipse插件来自动创建和配置项目,并且对业务的数据的增删改查等常规CURD业务作。
之所以说本eclipse插件是高度定制化的,是因为考虑到了业务代码的复杂性,在研发这个eclipse插件时,就从架构上为开发人员提供了自定义代码生成器的逻辑接口。开发人员可以跟据自己的业务需求,自己定义一些适合自己项目的代码生成器,即无需懂得Eclipse插件开发,也可以通过配置定制自己的代码生成器界面并按照自己定制的规则生成任何自己想要的业务代码。
当然,本Eclipse插件也可以单独用于任何其它java项目中,只要项目被Eclipse正常导入,开发人员就可以使用本插件,通过自定义一些代码生成器来生成自己的业务代码。
2.4.2 可自动生成业务api,方便前后端连调与测试
JAD通过对springfox-swagger的集成,具有自产api的能力。JAD使用的MVC框架是spring-mvc,每个action类可以用swagger相关注解标识,从而可以自动生成api文档,方便前后端连调与测试。
2.4.3 同时支持EhCache、MemCache、Redis等缓存引擎。
开发人员可以从EhCache、MemCache、Redis三者中任选一种或几种作为自己的缓存引擎。JAD对不同的缓存做了统一的封装,并提供了统一的api来访问缓存。而且,开发人员无需修改任何代码只需简单的配置一下,便可使项目在EhCache、MemCache、Redis三者之间进行切换。
同时JAD通过对Spring Cache的集成,提供了缓存操作相关注解,开发人员无需写缓存访问相关的逻辑代码,而通过一些简单的注解即可实现缓存操作。
2.4.4 权限认证方面,同时支持传统的认证方式,也支持可跨域的单点登录。
JAD对国内优秀的SSO框架kisso进行了集成,开发人员可跟据自己的需求选择使用,并同时支持多种认证方式(可支持统传的session、基于cookie的单点登录、基于加密cookie的跨域sso、基于统一认证中心的单点登录等方式)。
2.4.5 集成dubbo,可用分布式微服务架构部署项目。
JAD不但提供了传统的单体项目架构模式,还提供了分布式服务架构方式。它是通过对dubbo的集成来实现。并且,它提供了dubbo自带的服务管理控制台,以及一个建议的监控中心。
2.4.6 提供应用层waf防火墙,防止sql注入及xss脚本攻击。
用户可以用过配置决定是否使用 waf。
2.4.7 提供测试框架
JAD采用testng框架进行单元测试和集成测试,单元测试时service与dao可单独测试。比如要测试会员模块,对于UserService类,可以写一个UserServiceTest来测试它。
JAD提供了测试用例类所需的一些基类,并自动加载spring上下文,测试人员无需自已加载spring context。
(基于maven的特性,测试代码在项目打包的过程中会被自动去掉,无需担心测试代码被发布到项目安装包中。)
2.4.8 提供常用工具类
提供常用的字符串、日期、http请求、JSON处理、加解密等常用工具类
2.4.9 提供项目Demo以及快速生成项目的向导
JAD提供两种架构的项目Demo,分别是传统单体项目的demo,也提供微服务架构的可分布部署的项目Demo。开发人员,可以直接复制demo项目,然后修改成自己的项目。
当然,demo项目中可能包括了本框架内置的所有业务组件(包括oa,cms等等),并不建议开发人员这样做。本框架推荐的一种做法就是采用本项目提供的Eclipse插件内置的“创建JAD项目”的向导来自动创建项目,在通过向导创建项目的过程中,用户可以自行选择所需的业务模块,以及orm、cache等技术选型。
2.5 项目架构
JAD项目各个业务模块之间相互独立,各层之间耦合度底,跟据项目的规模和业务量的大小。系统架构师可以选择性的使用传统的单体项目架构,或者分布式的微服务架构。
2.5.1 总体架构
JAD项目总体架构图如下:
图:JAD项目总体架构
2.5.2 单体项目架构
在传统的简单项目中,各个业务模块都是集成在同一个项目中一起部署,这种项目简单粗暴,易于部署和发布。JAD单体项目架构图如下所示:
图:JAD单体项目架构图
2.5.3 微服务架构
如果项目模块比较复杂,业务量比较庞大,可考虑采用微服务架构模式。在这种架构下,每个业务模块被单独部署为一个独立的服务提供者,采用dubbo暴露成服务,并将之发布到注册中心,架构图如下:
图:JAD微服务架构图
2.6 核心技术
JAD框架用到的技术比较多,但并不是所有技术都需要掌握,开发人员可跟据自己的项目需要选用相应模块,并跟据需要去学习和了解其依赖的技术。
2.6.1 后端技术选型
核心框架:SpringFramework 4.2.8.RELEASE
安全框架:Apache Shiro1.2
视图框架:Spring MVC4.1
服务端验证:HibernateValidator 5.2
布局框架:SiteMesh 2.4
工作流引擎:Activiti 5.21
任务调度:Spring Task4.1
持久层框架:MyBatis 3.2、Hibernate 5.1.0.Final、Spring jpa 1.10.5.RELEASE
数据库连接池:Alibaba Druid1.0
数据库:目前仅支持mysql
缓存框架:Ehcache 2.6、Redis、Memcache 2.5.1
日志管理:SLF4J 1.7、Log4j
服务框架:Dubbo 2.5.3
2.6.2 前端技术选型
JS框架:jQuery 1.9。
CSS框架:TwitterBootstrap 2.3.1(稳定是后台,UI方面根据需求自己升级改造)。
客户端验证:JQueryValidation Plugin 1.11。
富文本在线编辑:CKEditor
在线文件管理:CKFinder
动态页签:Jerichotab
手机端框架:Jingle
数据表格:jqGrid
对话框:jQuery jBox
下拉选择框:jQuerySelect2
树结构控件:jQuery zTree
日期控件:My97DatePicker
2.7 特别鸣谢
Jeesite作者和它的团队
Kisso作者和它的团队
koala作者和它的团队
dubbo作者和它的团队
湖南祁东县禅歌传媒团队
想了解更多信息及时获得项目动态,请扫码关注作者公众号: