Jboot是一款基于JFinal的開(kāi)源框架醇蝴,在JFinal的基礎(chǔ)上物邑,增加了微服務(wù)概念弃理,號(hào)稱“SpringCloud 之外的另一個(gè)選擇溃论,已經(jīng)使用在用戶量過(guò)億的商業(yè)產(chǎn)品上,有超過(guò)1000家公司在使用Jboot做極速開(kāi)發(fā)”痘昌,整合了包括RPC钥勋、MQ、序列化辆苔、限流算灸、shiro、代碼生成器等流行組件驻啤,今天就來(lái)看看其中的代碼生成工具菲驴。
Jboot實(shí)際上根據(jù)微服務(wù)架構(gòu)擴(kuò)展了JFinal的generator為BaseModel、Model骑冗、Service層的接口赊瞬、Service層的實(shí)現(xiàn),所有代碼在io.jboot.codegen下以generator結(jié)尾的類沐旨。
生成代碼很簡(jiǎn)單森逮,代碼及說(shuō)明如下:
package com.xxx.models;
import com.jfinal.kit.PathKit;
import io.jboot.codegen.model.JbootBaseModelGenerator;
import io.jboot.codegen.model.JbootModelGenerator;
import io.jboot.codegen.service.JbootServiceImplGenerator;
import io.jboot.codegen.service.JbootServiceInterfaceGenerator;
public class Generator {
public static void main(String[] args) throws Exception {
//如果項(xiàng)目中已經(jīng)有jboot.properties的數(shù)據(jù)源設(shè)置,下面兩行可以注釋掉磁携,generator會(huì)自動(dòng)調(diào)用配置文件中的設(shè)置
//JbootApplication.setBootArg("jboot.datasource.url", "jdbc:mysql://localhost:3306/jboot?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true");
//JbootApplication.setBootArg("jboot.datasource.user", "root");
String modelPackage = "com.xxx.models"; //設(shè)置model的包名
String baseModelPackage = modelPackage + ".base";
//生成代碼保存的路徑
String modelDir = PathKit.getWebRootPath() + "/src/main/java/" + modelPackage.replace(".", "/");
String baseModelDir = PathKit.getWebRootPath() + "/src/main/java/" + baseModelPackage.replace(".", "/");
System.out.println("start generate...");
System.out.println("generate dir:" + modelDir);
//生成Model和BaseModel
new JbootBaseModelGenerator(baseModelPackage, baseModelDir).generate();
new JbootModelGenerator(modelPackage, baseModelPackage, modelDir).generate();
//設(shè)置service層的包名
String servicePackage = "com.xxx.services";
//生成service接口和實(shí)現(xiàn)類褒侧,實(shí)現(xiàn)類以provider命名,可以改為你需要的名稱谊迄。
new JbootServiceInterfaceGenerator(servicePackage, modelPackage).generate();
new JbootServiceImplGenerator(servicePackage , modelPackage).setImplName("provider").generate();
System.out.println("Task complete.");
}
}
后續(xù)還會(huì)不斷更新Jboot的使用方法闷供。