前言
最近想使用idea提供的File template自动化创建service和dao文件,目标如下
创建java文件时输入ExampleServiceImpl,生成如下文件
@Service("exampleService")
public class ExampleServiceImpl
implements ExampleService{
}
结果
下面是编写的模板文件
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
#set($INTERFACE = ${StringUtils.chop($NAME,4)})
#set($SERVICE = $INTERFACE.substring(0,1).toLowerCase()+ $INTERFACE.substring(1))
@Service("${SERVICE}")
public class ${NAME} implements ${INTERFACE}{
}
研究过程
这里的关键就是 $INTERFACE和$SERVICE的解析
file tempalte是基于apache velocity的
这里主要用到了下面三点
set指令
velocity中使用 #set($VAR = ...)声明一个可能使用多次的变量
StringUtils.chop(String str,int i)
丢弃str的最后i个字符,值得注意的是需要使用${Util.xxx()...}包裹velocity的工具类
$VAR.substring()
在这里$VAR其实都是字符串,所以可以直接使用字符串相关的api
网友评论