鉴于公司需要对代码规范要求,且目前使用idea 作为集成开发工具的同事较多,为保持代码规范与项目组要求一致,现对liveTemplate配置进行了整理,以供其他同事参考,操作流程如下:
操作入口
Setting -> Editor -> Live Templates
Template Group 创建
创建以zjport为名称的模板group
点击右侧的【➕】,选择【Live Template】或者【Template Group】
建议同事先创建【Template Group】,然后再在该group上创建【Live Template】,以便以管理
选中zjport,创建【Live Template】,初始页面如下:
copyright定义

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

类注释定义

Template text 文案
/*** @description: $description$* @author: <a href="mailto:zhangbao@zjport.gov.cn">zhangbao</a>* @version $Id: $file$ $Date$ $time$ zhangbao $* @since 1.0*/
同时需要点击【Edit variable】,设置取值表达式

执行效果

方法注释定义

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

param设置Expression
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());
新版
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
groovyScript("def returnType = \"${_1}\"; def result = ' * @return: ' + returnType; return result;", methodReturnType());
执行效果

日志对象创建

Template text 文案
private Logger logger = LoggerFactory.getLogger($class$.class);

执行效果

info级别日志

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

parameter 设置Expression
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
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());
执行效果

lerror, lbug 参考 linfo(info级别日志)
重写toString方法
设置toString表达式
public java.lang.String toString() {final java.lang.StringBuilder sb = new java.lang.StringBuilder("{");#set ($i = 0)#foreach ($member in $members)#if ($i == 0)sb.append("\"###elsesb.append(", \"###end#if ($member.string)$member.name\":\"")###else$member.name\":")###end#if ($member.primitiveArray || $member.objectArray).append(java.util.Arrays.toString("\"$member.name"\"));#elseif ($member.string).append($member.accessor).append('\"');#else.append($member.accessor);#end#set ($i = $i + 1)#endsb.append('}');return sb.toString();}
配置过程及执行效果
此时重写的toString方法会生成json格式的数据结构 ,便于后续的日志排查等
