鉴于公司需要对代码规范要求,且目前使用idea 作为集成开发工具的同事较多,为保持代码规范与项目组要求一致,现对liveTemplate配置进行了整理,以供其他同事参考,操作流程如下:

操作入口

Setting -> Editor -> Live Templates


Template Group 创建

创建以zjport为名称的模板group

点击右侧的【➕】,选择【Live Template】或者【Template Group】

建议同事先创建【Template Group】,然后再在该group上创建【Live Template】,以便以管理

选中zjport,创建【Live Template】,初始页面如下:

image-20200616152723191.png

copyright定义

image-20200616152844841.png

Template text 文案

  1. /**************************************************************************
  2. * Copyright (c) 2006-2025 ZheJiang Electronic Port, Inc.
  3. * All rights reserved.
  4. *
  5. * 项目名称:世晨2.0
  6. * 版权说明:本软件属浙江电子口岸有限公司所有,在未获得浙江电子口岸有限公司正式授权
  7. * 情况下,任何企业和个人,不能获取、阅读、安装、传播本软件涉及的任何受知
  8. * 识产权保护的内容。
  9. ***************************************************************************/

执行效果

copyright.gif

类注释定义

image-20200616153054109.png

Template text 文案

  1. /**
  2. * @description: $description$
  3. * @author: <a href="mailto:zhangbao@zjport.gov.cn">zhangbao</a>
  4. * @version $Id: $file$ $Date$ $time$ zhangbao $
  5. * @since 1.0
  6. */

同时需要点击【Edit variable】,设置取值表达式

image-20200616153308620.png

执行效果

zjc.gif

方法注释定义

image-20200616155021311.png

Template text 文案

  1. **
  2. * @description: $description$
  3. $param$
  4. * @throws: $throws$
  5. $return$
  6. * @author: zhangbao
  7. * @date: $date$ $time$
  8. */

注意,请保持上述格式不变,否则生成的效果会出现对齐问题,且zjm需在方法内容键入,否则不能生效 注意文案中没有斜杠(输入时/+对应的快捷命令)因为要遵循idea 默认的语法

image-20200616155054528.png

param设置Expression

  1. groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {if(i<(params.size()-1)){result+=' * @param: ' + params[i] + '\\n'}else{result+=' * @param: ' + params[i] + ' '}}; return result;}", methodParameters());

新版

  1. groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {if(i<(params.size()-1)){if(i==0){result+='* @param ' + params[i] + '\\n'}else{if(i==0){result+='* @param ' + params[i] + '\\n'}else{result+=' * @param ' + params[i] + '\\n'}}}else{result+=' * @param ' + params[i] + ' '}}; return result;}", methodParameters());

return设置Expression

  1. groovyScript("def returnType = \"${_1}\"; def result = ' * @return: ' + returnType; return result;", methodReturnType());

执行效果

zjm.gif

日志对象创建

image-20200616154124430.png

Template text 文案

  1. private Logger logger = LoggerFactory.getLogger($class$.class);

image-20200616154204033.png

执行效果

logger.gif

info级别日志

image-20200616154256706.png

Template text 文案

  1. logger.info("执行方法: $method$ ,参数为: $parameter$" ,$arguments$);

image-20200616154352395.png

parameter 设置Expression

  1. groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {if(i<(params.size()-1)){result+=params[i] + ' = {} ,'}else{result+=params[i] + ' = {}'}}; return result;}", methodParameters());

arguments设置Expression

  1. groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {if(i<(params.size()-1)){result+=params[i] + ' ,'}else{result+=params[i]}}; return result;}", methodParameters());

执行效果

linfo.gif
lerror, lbug 参考 linfo(info级别日志)

重写toString方法

设置toString表达式

  1. public java.lang.String toString() {
  2. final java.lang.StringBuilder sb = new java.lang.StringBuilder("{");
  3. #set ($i = 0)
  4. #foreach ($member in $members)
  5. #if ($i == 0)
  6. sb.append("\"##
  7. #else
  8. sb.append(", \"##
  9. #end
  10. #if ($member.string)
  11. $member.name\":\"")##
  12. #else
  13. $member.name\":")##
  14. #end
  15. #if ($member.primitiveArray || $member.objectArray)
  16. .append(java.util.Arrays.toString("\"$member.name"\"));
  17. #elseif ($member.string)
  18. .append($member.accessor).append('\"');
  19. #else
  20. .append($member.accessor);
  21. #end
  22. #set ($i = $i + 1)
  23. #end
  24. sb.append('}');
  25. return sb.toString();
  26. }

配置过程及执行效果

  1. 此时重写的toString方法会生成json格式的数据结构 ,便于后续的日志排查等