Commit de5e8adc by fsn

调研模板引擎,抽象出控制器模板

parent ca660632
package ${packageName};
@for(import in imports!){
import ${import};
@}
/**
* ${bizChName}控制器
*
* \@author fengshuonan
* \@Date ${tool.currentTime()}
*/
\@Controller
\@RequestMapping("/${bizEnName}")
public class ${tool.firstLetterToUpper(bizEnName)}Controller extends BaseController {
private String PREFIX = "/system/${bizEnName}/";
/**
* 跳转到${bizChName}首页
*/
\@RequestMapping("")
public String index() {
return PREFIX + "${bizEnName}.html";
}
/**
* 跳转到添加${bizChName}
*/
\@RequestMapping("/${bizEnName}_add")
public String ${bizEnName}Add() {
return PREFIX + "${bizEnName}_add.html";
}
/**
* 跳转到修改${bizChName}
*/
\@RequestMapping("/${bizEnName}_update")
public String ${bizEnName}Update() {
return PREFIX + "${bizEnName}_edit.html";
}
/**
* 新增${bizChName}
*/
\@RequestMapping(value = "/add")
\@ResponseBody
public Object add() {
return super.SUCCESS_TIP;
}
/**
* ${bizChName}详情
*/
\@RequestMapping(value = "/detail")
\@ResponseBody
public Object detail() {
return null;
}
/**
* 修改${bizChName}
*/
\@RequestMapping(value = "/update")
\@ResponseBody
public Object update() {
return super.SUCCESS_TIP;
}
/**
* 删除${bizChName}
*/
\@RequestMapping(value = "/delete")
\@ResponseBody
public Object delete() {
return SUCCESS_TIP;
}
}
package com.stylefeng.guns.core.template.config;
import java.util.ArrayList;
import java.util.List;
/**
* 控制器模板生成的配置
*
* @author fengshuonan
* @date 2017-05-07 22:12
*/
public class ControllerConfig {
private String bizChName;
private String bizEnName;
private String packageName;
private List<String> imports;
public ControllerConfig(){
init();
}
private void init(){
ArrayList<String> imports = new ArrayList<>();
imports.add("com.stylefeng.guns.common.controller.BaseController");
imports.add("org.springframework.stereotype.Controller");
imports.add("org.springframework.web.bind.annotation.RequestMapping");
imports.add("org.springframework.web.bind.annotation.ResponseBody");
this.imports = imports;
this.packageName = "com.stylefeng.guns.modular.system.controller";
}
public String getBizChName() {
return bizChName;
}
public void setBizChName(String bizChName) {
this.bizChName = bizChName;
}
public String getBizEnName() {
return bizEnName;
}
public void setBizEnName(String bizEnName) {
this.bizEnName = bizEnName;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public List<String> getImports() {
return imports;
}
public void setImports(List<String> imports) {
this.imports = imports;
}
}
package com.stylefeng.guns.core.template.engine;
import com.stylefeng.guns.core.support.BeanKit;
import com.stylefeng.guns.core.template.config.ControllerConfig;
import com.stylefeng.guns.core.util.ToolUtil;
import org.beetl.core.Configuration;
import org.beetl.core.GroupTemplate;
import org.beetl.core.Template;
import org.beetl.core.resource.ClasspathResourceLoader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/**
* guns项目模板生成 引擎
*
* @author fengshuonan
* @date 2017-05-07 22:15
*/
public class GunsEngine {
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
properties.put("RESOURCE.root","");
ControllerConfig controllerConfig = new ControllerConfig();
controllerConfig.setBizChName("测试");
controllerConfig.setBizEnName("test");
ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader();
Configuration cfg = new Configuration(properties);
GroupTemplate groupTemplate = new GroupTemplate(resourceLoader,cfg);
groupTemplate.registerFunctionPackage("tool", new ToolUtil());
Template template = groupTemplate.getTemplate("gunsTemplate/Controller.java.btl");
template.binding(BeanKit.beanToMap(controllerConfig));
String render = template.render();
template.renderTo(new FileOutputStream("D:\\ideaSpace\\guns\\src\\main\\java\\com\\stylefeng\\guns\\modular\\system\\controller\\TestController.java"));
System.out.println(render);
}
}
......@@ -32,7 +32,7 @@ public class ResKit {
* @author fengshuonan
*/
public static String getClassPathFile(String file) {
// return ResKit.class.getClassLoader().getResource(file).getPath();
//return ResKit.class.getClassLoader().getResource(file).getPath();
return Thread.currentThread().getContextClassLoader().getResource(file).getPath();
}
}
......@@ -493,4 +493,34 @@ public class ToolUtil {
}
return str;
}
/**
* 当前时间
*
* @author stylefeng
* @Date 2017/5/7 21:56
*/
public static String currentTime(){
return DateUtil.getTime();
}
/**
* 首字母大写
*
* @author stylefeng
* @Date 2017/5/7 22:01
*/
public static String firstLetterToUpper(String val){
return StrKit.firstCharToUpperCase(val);
}
/**
* 首字母小写
*
* @author stylefeng
* @Date 2017/5/7 22:02
*/
public static String firstLetterToLower(String val){
return StrKit.firstCharToLowerCase(val);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment