最近刚把spring的源码过了一遍,但总感觉看完不能就这么结束了,得做点什么留下个脚印,所以自己基于maven+springMVC+mybatis+velocity+mysql+junit搭建个工程项目,并且做了对应框架的代码生成工具。
下面就把项目框架介绍下,并在最后附带代码下载地址
1.项目基本框架
代码生成器基于velocity作为模板生成,目前主要做了jar包的生成以及web工程的生成,并自动生成demo以及测试用例
2.工程基本框架介绍
JarServerCreator 是用来生成jar包工程
package com.fjsh.spring.mybasti.auto.creater;
import java.util.List;
import com.fjsh.spring.mybasti.auto.classcreator.BaseEntityDAOCreater;
import com.fjsh.spring.mybasti.auto.classcreator.BaseEntityServiceCreater;
import com.fjsh.spring.mybasti.auto.classcreator.CreateFolder;
import com.fjsh.spring.mybasti.auto.classcreator.EntityCreater;
import com.fjsh.spring.mybasti.auto.classcreator.JarPomCreater;
import com.fjsh.spring.mybasti.auto.classcreator.PropertiesCreater;
import com.fjsh.spring.mybasti.auto.db.DbUtils;
import com.fjsh.spring.mybasti.auto.db.Table;
import com.fjsh.spring.mybasti.auto.utils.GlobalsParam;
/**
*@Title:JarServerCreator
*TODO:jar工程生成
*@Description:
*@author:a925907195@qq.com
*@date 2016年11月6日 下午2:58:01
*
*/
public class JarServerCreator {
public static void main(String[] args) throws Throwable {
//系统配置初始化
GlobalsParam.init();
// 生成必要的目录结构,同时拷贝必要的文件
CreateFolder.createrFolder();
List<Table> tablelist = DbUtils.getAllTableFromDb();
for (Table td : tablelist) {
// 生成实体类
EntityCreater.createEntity(td);
//生成dao接口和mapper基类实现
BaseEntityDAOCreater.createBaseDao(td);
// 生成Service 接口以及接口的实现,并实现基本的测试接口
BaseEntityServiceCreater.createBaseService(td);
}
// 生成配置文件
PropertiesCreater.createProperties(tablelist);
// 生成pom文件
JarPomCreater.createPom();
}
}
springMVCCreator 是生成web工程的入口
package com.fjsh.spring.mybasti.auto.creater;
import java.util.List;
import com.fjsh.spring.mybasti.auto.classcreator.BaseEntityDAOCreater;
import com.fjsh.spring.mybasti.auto.classcreator.BaseEntityServiceCreater;
import com.fjsh.spring.mybasti.auto.classcreator.ControllerDemoCreater;
import com.fjsh.spring.mybasti.auto.classcreator.EntityCreater;
import com.fjsh.spring.mybasti.auto.classcreator.SpringMVCCreateFolder;
import com.fjsh.spring.mybasti.auto.classcreator.SpringMVCPomCreater;
import com.fjsh.spring.mybasti.auto.classcreator.SpringMVCPropertiesCreater;
import com.fjsh.spring.mybasti.auto.db.DbUtils;
import com.fjsh.spring.mybasti.auto.db.Table;
import com.fjsh.spring.mybasti.auto.utils.GlobalsParam;
/**
*@Title:springMVCCreator
*TODO:web工程生成
*@Description:
*@author:a925907195@qq.com
*@date 2016年11月6日 下午2:57:47
*
*/
public class springMVCCreator {
public static void main(String[] args) throws Throwable {
//系统配置初始化
GlobalsParam.init();
// 生成必要的目录结构,同时拷贝必要的文件
SpringMVCCreateFolder.createrFolder();
List<Table> tablelist = DbUtils.getAllTableFromDb();
for (Table td : tablelist) {
// 生成实体类
EntityCreater.createEntity(td);
//生成dao接口和mapper基类实现
BaseEntityDAOCreater.createBaseDao(td);
// 生成Service 接口以及接口的实现
BaseEntityServiceCreater.createBaseService(td);
}
// 生成controller基础文件并将web基础配置文件拷贝到目的项目文件
ControllerDemoCreater.createControllerFile();
// 生成配置文件
SpringMVCPropertiesCreater.createProperties(tablelist);
// 生成pom文件
SpringMVCPomCreater.createPom();
}
}
com.fjsh.spring.mybasti.auto.db包是用来映射数据库表结构以及属性信息
com.fjsh.spring.mybasti.auto.classcreator 包主要是用来生成框架基本的dao包,service等层级关系
配置文件目录:
template是用来存储模板信息
SystemGlobals.properties 用来存储系统框架生成时候的基本配置信息,基本内容如下:
#base folder maven 基础项目目录地址
basejavafolder=src.main.java
baseresourcesfolder=src.main.resources
basewebappfolder=src.main.webapp
basetestjavafolder=src.test.java
basetestresourcesfolder=src.test.resources
#outputfolder 输出项目目录
outputfolder=D:/workspace/com_spring_mybatis_web
#base package 项目基础包名
basepackage=com.spring.mybatis.user.web
#映射文件存放的文件夹
Mappersfolder=mysqlMappers
groupId=com.spring.mybatis.user.web
artifactId=com_spring_mybatis_user_web
######################数据库连接配置信息#########################
#dburl
ConnetionURL=jdbc:mysql://localhost:3306/dbwww_user?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
DriversClass=com.mysql.jdbc.Driver
UserName=fjsh
PassWord=271608
生成时需配置框架基本必须的信息
项目开发比较仓促,测试不够完善,忘高手指摘完善,感激……