点击上方“芋道源码”,选择“设为星标”
管她前浪,还是后浪?
能浪的浪,才是好浪!
每天 8:55 更新文章,每天掉亿点点头发...
源码精品专栏
很抱歉,请在手机微信登录投票
432票 52%
54票 6%
105票 12%
122票 14%
48票 5%
66票 7%
打开 IDEA 的 Settings
,点击 Editor-->File and Code Templates
,点击右边 File
选项卡下面的 Class
,在其中添加图中红框内的内容:
`/**
* @author jitwxs
* @date ${YEAR}年${MONTH}月${DAY}日 ${TIME}
*/
`
图片
在我提供的示例模板中,说明了作者和时间,IDEA 支持的所有的模板参数在下方的 Description
中被列出来。
保存后,当你创建一个新的类的时候就会自动添加类注释。如果你想对接口也生效,同时配置上图中的 Interface
项即可。
不同于目前网络上互相复制粘贴的方法注释教程,本文将实现以下功能:
@param
注解@Return
注解相较于类模板,为方法添加注释模板就较为复杂,首先在 Settings
中点击 Editor-->Live Templates
。
点击最右边的 +
,首先选择 2. Template Group...
来创建一个模板分组:
图片
在弹出的对话框中填写分组名,我这里叫做 userDefine:
图片
然后选中刚刚创建的模板分组 userDefine
,然后点击 +
,选择 1. Live Template
:
图片
此时就会创建了一个空的模板,我们修改该模板的 Abbreviation
、Description
和 Template text
。需要注意的是,Abbreviation
必须为 *
,最后检查下 Expand with
的值是否为 Enter 键。
图片
上图中· Template text
内容如下,请直接复制进去,需要注意首行没有 /
,且 \*
是顶格的 。
`*
*
* @author jitwxs
* @date $date$ $time$$param$ $return$
*/
`
注意到右下角的 No applicable contexts yet
了吗,这说明此时这个模板还没有指定应用的语言:
图片
点击 Define
,在弹框中勾选Java
,表示将该模板应用于所有的 Java 类型文件。
设置 applicable contexts
还记得我们配置 Template text
时里面包含了类似于 $date$
这样的参数,此时 IDEA 还不认识这些参数是啥玩意,下面我们对这些参数进行方法映射,让 IDEA 能够明白这些参数的含义。点击 Edit variables
按钮:
为每一个参数设置相对应的 Expression
:
设置 Expression
需要注意的是,date
和 time
的 Expression
使用的是 IDEA 内置的函数,直接使用下拉框选择就可以了,而 param
这个参数 IDEA 默认的实现很差,因此我们需要手动实现,代码如下:
`groovyScript("def result = '';def params = "${_1}".replaceAll('[\\[|\\]|\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] != '')result+='* @param ' + params[i] + ((i < params.size() - 1) ? '\r\n ' : '')}; return result == '' ? null : '\r\n ' + result", methodParameters())
`
另外 return
这个参数我也自己实现了下,代码如下:
`groovyScript("return "${_1}\" == 'void' ? null : '\\r\\n * @return ' + \"${_1}"", methodReturnType())
`
注:你还注意到我并没有勾选了 Skip if defined
属性,它的意思是如果在生成注释时候如果这一项被定义了,那么鼠标光标就会直接跳过它。我并不需要这个功能,因此有被勾选该属性。
点击 OK 保存设置,大功告成!
类注释只有在新建类时才会自动生成 ,效果如下:
类注释
将演示以下几种情况:
方法注释
(1)为什么模板的 Abbreviation
一定要叫 \*
?Expand with
要保证是 Enter 键?
答:因为 IDEA 模板的生成逻辑是 模板名 + 生成键
,当生成键是 Enter 时,我们输入 * + Enter
就能够触发模板。
这也同时说明了为什么注释模板首行是一个 *
了,因为当我们先输入 /*
,然后输入 * + Enter
,触发模板,首行正好拼成了 /**
,符合 Javadoc 的规范。
(2)注释模板中为什么有一行空的 \*
?
答:因为我习惯在这一行写方法说明,所以就预留了一行空的写,你也可以把它删掉。
(3)注释模板中 $time$$param$
这两个明明不相干的东西为什么紧贴在一起?
答:首先网上提供的大部分 param 生成函数在无参情况下仍然会生成一行空的 @param
,因此我对param 函数的代码进行修改,使得在无参情况下不生成 @param
,但是这就要求 $param$
要和别人处在同一行中,不然没法处理退格。
(4)为什么 return 参数不使用 methodReturnType()
, 而要自己实现?
答:methodReturnType()
在无返回值的情况下会返回 void,这并没有什么意义,因此我对 methodReturnType() 返回值进行了处理,仅在有返回值时才生成。
(5)为什么 $return$
不是单独一行?
答:因为当 methodReturnType()
返回 null 时,无法处理退格问题,原因同第三点。
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:
已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (^__^)
原网址: 访问
创建于: 2021-03-26 12:54:01
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论