美文网首页Java 杂谈未分类
idea中file template的较高级使用

idea中file template的较高级使用

作者: alonwang | 来源:发表于2018-09-06 16:31 被阅读2次

前言

最近想使用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


  1. StringUtils api
  2. stackoverflow上关于velocity string的api说明

相关文章

网友评论

    本文标题:idea中file template的较高级使用

    本文链接:https://www.haomeiwen.com/subject/njvxgftx.html