鉴于公司需要对代码规范要求,且目前使用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("\"##
#else
sb.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)
#end
sb.append('}');
return sb.toString();
}
配置过程及执行效果
此时重写的toString方法会生成json格式的数据结构 ,便于后续的日志排查等