快嘉框架是一个面向变化的J2EE开发模型最小实践,它将一个传统的J2EE单体应用模块化,分成了包括war、批处理等在内的主应用和可被依赖的普通jar独立维护;这个模型利用maven构建,主应用通过spring集成它所依赖的所有jar后可以独立部署、启动,对外提供服务。
快嘉框架将需求迭代过程中最容易变化的数据库持久层面和控制器层面的代码作为模块独立出来,并使用快嘉网平台提供代码生成服务;一般开发人员只需要维护针对数据库定义和接口分别维护pdm文件和xml文件,就可以通过快嘉网平台提供的服务迅速获得这部分模块代码,可以在一定程度上减轻工作量。
快嘉开发框架将一个标准的J2EE项目拆分为基础组件(Base)、持久层组件(Persistence-Impl)、接口和报文定义组件(Bundle)、接口模拟实现组件(BundleMock)、业务实现组件(Service-Impl)、批处理系统(Batch)、接口系统(Api)和接口测试组件(SDK)8个部分并行开发建设,其中基础组件(Base)、接口和报文定义组件(Bundle)、接口模拟实现组件(BundleMock)和接口测试组件(SDK)都可以由快嘉网平台提供的代码生成服务生成。
该框架基于spring4+mybatis3.3.0搭建,持久层为mysql,示例demo完整实现了注册、登录和自动登录接口,具体业务逻辑可参考Service-Impl组件。
具体接口参见快嘉框架接口说明
具体更新说明参见v1.6更新说明
安装基础环境
mysql,参考linux安装mysql5.6.29实录
准备windows开发环境
下载ciHelper1.8版本,install本地
#以下操作需要在git bash中执行
cd d:/workshop
git clone https://gitee.com/fastjrun/ciHelper.git
cd ciHelper
git checkout v1.8
mvn clean install -Pnocheck
下载ciAgent1.2版本,install到本地
#以下操作需要在git bash中执行
cd d:/workshop
git clone https://gitee.com/fastjrun/ciagent.git
cd ciagent
git checkout v1.2
#先install本地cidev-api和xercesImpl
cd lib
mvn install:install-file -Dfile=cidev-sdk-1.3-SNAPSHOT.jar -DgroupId=com.fastjrun -DartifactId=cidev-sdk -Dversion=1.3-SNAPSHOT -Dpackaging=jar
mvn install:install-file -Dfile=xercesImpl-2.9.1.jar -DgroupId=xerces -DartifactId=xercesImpl -Dversion=2.9.1 -Dpackaging=jar
cd ..
mvn clean install -Pnocheck,local
本项目中Base、Bundle、BundleMock、SDK组件是通过快嘉网提供的服务动态生成的,ciAgent是一个maven插件,作为代理和快嘉网发生交互,具体如何发生作用可以看ciAgent代码。ciAgent如何用可以参考Base、Bundle、BundleMock、SDK的pom.xml配置。
下载demo
参考Api/pom.xml中的profile的id为local的配置信息调整mysql的参数,并导入fast_demo.sql和testdata.sql
#以下操作需要在git bash中执行
cd d:/workshop
git clonehttps://gitee.com/fastjrun/demo.git
cd demo
git checkout v1.6
mvn clean install -Pnocheck -pl .,Common,Util,Base,Bundle,BundleMock,SDK,Persistence-Impl,Service-Impl -Dcommongc.skip=false
mvn clean package -pl ApiBuffle,Api,Batch
备注: 如果没有配置私服,且第一次用maven,可能会比较慢,而且会容易被中断,多试几次,直到你看到以上步骤全部OK。强烈推荐用私服,这样你可以将以上所有install命令或者deploy(除cidev-api和xercesImpl需要upload到私服),考虑到你可能上私服,pom.xml可以同时支持nexus2和nexus3,默认nexus3
#如切为nexus2,参考命令如下:
nexus2-snapshots:mvn clean deploy -Dmycompany-nexus=http://www.mycompany.com:8081/nexus -Dmycompany-snapshots-url-suffix=/content/repositories/snapshots/
nexus2-releases -Dmycompany-releases-url-suffix=/content/repositories/releases/
部署
- 安装tomcat后,tomcat目录为d:/app/server/tomcat8
- 配置
#以下操作需要在git bash中执行
cd d:/workshop
#以下操作需要在git bash中执行
rm -rf /d/app/demo/batch
cp Batch/target/batch.jar /d/app/demo/batch
cp Api/target/demo-api.war /d/server/tomcat8/webapps
cp ApiBuffle/target/demo-buffle.war /d/server/tomcat8/webapps
启动
- 打开cmd窗口,切到目录d:/app/demo/batch;执行java -jar batch.jar,启动批处理
- 资源浏览器打开d:/server/tomcat8/bin;双击startup.sh,启动tomcat。
验证
- 用postman验证demo-api
- 举个例子,比如我们验证demo提供的注册接口,header设置header设置Content-Type为“application/json; charset=UTF-8”
- 例如:method选择post、url填http://192.168.5.217:8082/demo-api/app/user/register/3245/v1.0/ios/authtest/20160817102050385, body选择JSON(application/json),请求报文如下所示
{"email":"[email protected]","loginId":"test3","loginpwd":"22222","mobileNo":"199222336453","nickName":"走2","sex":"1"}
- 如果没啥意外,响应报文应该如下
- 此时打开d:/app/demo/logs/batch.log,可以看到日志如下
- 表明batch也验证成功。
代码生成服务能力
- demo.pdm变更后,Base会重新生成源码,主要是单表对应的javabean和基于单表的增删改查操作类
- demo_user.xml维护了接口定义、输入参数定义、返回参数定义,接口业务和批处理作业业务定义,对应这部分的代码会在Bundle、BundleMock、SDK模块生成