运用 IDEA Live Template 加快写代码速度

用 IDEA 写代码的时候往往会重复性的写一段类似或者一样的代码，让人懊恼不已。

IDEA 自带了个 Live Template 功能，不仅有许多自带的快捷写代码的功能，而且还可以自定义属于自己的 Live Template。

自定义命令

可以自定义一些命令。 打开 IDEA 的设置，找到 Live Template，右侧添加，可以先添加一个自己的分组，比如我添加了一个My Live的分组，再添加具体的配置

设置中的 Live Template

变量用$$包裹，IDEA 就知道这是个变量了，变量可以在右下角的Edit variables中赋值

其中，Expression列可以为变量设置一个计算方法，比如className()说明CLASS变量为当前类名，也可以在Default value上指定一个默认值。 最后一列如果勾选的话，使用的时候如果这个变量计算出值了则不提示用户进行输入赋值。

以下是我自己使用的一些例子

logger 定义

Template text

Copy
private static final Logger logger = LoggerFactory.getLogger($CLASS$.class);

Variables

Name | Expression | Default value | Skip if defined
CLASS | className() | | ☑️

效果

logger 定义

返回 ModelAndView

Template text

Copy
@RequestMapping("/$NAME$.html")
public ModelAndView $NAME$(HttpServletRequest request, HttpServletResponse response) {
logger.info("****************$CLASS$:$NAME$ 开始****************");
logger.info("****************$CLASS$:$NAME$ 结束****************");
return new ModelAndView("$NAME$/$NAME$");
}

Variables

Name | Expression | Default value | Skip if defined
NAME | | |
CLASS | className() | | ☑️

效果

返回 ModelAndView (有 url 参数)

Template text

Copy
@RequestMapping("/$NAME$/{$PATHVARIABLE$}.html")
public ModelAndView $NAME$(@PathVariable("$PATHVARIABLE$") String $PATHVARIABLE$, HttpServletRequest request, HttpServletResponse response) {
logger.info("****************$CLASS$:$NAME$ 开始****************");
logger.info("****************$CLASS$:$NAME$ 结束****************");
return new ModelAndView("$NAME$/$NAME$");
}

Variables

Name | Expression | Default value | Skip if defined
NAME | | |
PATHVARIABLE | | |
CLASS | className() | | ☑️

效果

新建 Controller

Template text

Copy
@RestController
public class $ControllerName$Controller {
private static final Logger logger = LoggerFactory.getLogger($ControllerName$Controller.class);

/**
* $viewName$
*/
@RequestMapping("/$viewName$.html")
public ModelAndView $viewName$(HttpServletRequest request, HttpServletResponse response) {
logger.info("****************$ControllerName$Controller:$viewName$ 开始****************");
logger.info("****************$ControllerName$Controller:$viewName$ 结束****************");
return new ModelAndView("$viewName$/$viewName$");
}
}

Variables

Name | Expression | Default value | Skip if defined
ControllerName | | |
viewName | | |

效果

自带命令

也可以使用自带命令来模板式地补全语句，如遍历循环语句（for、foreach）、使用 String.format () 包裹一个字符串、使用类型转化包裹一个表达式、根据判（非）空或者其它判别语句生成 if 语句、用 instanceOf 生成分支判断语句等。 使用的方式也很简单，就是在一个表达式后按下点号 . ，然后输入一些提示或者在列表中选择一个候选项，常见的候选项下面会给出 GIF 演示。

var 声明

null 判空

notnull 判非空

nn 判非空

for 遍历

fori 带索引的遍历

not 取反

if 条件判断

cast 强转

return 返回值