编程之路

  • home
  • article
  • class
  • label
  • utils

  • 搜索
aop 边缘计算 框架 物联网 敏捷开发 团队 压力测试 Markdown 学习方法 学习 产品 规范 日志 微服务 壁纸 开发平台 Java 全栈 前端 开发规范 MQTT CentOS 镜像站 IntelliJ IDEA FreeMarker UML 计算机 软件 Tomcat Netty Web Service Docker Dubbo Kafka NoSQL Redis 消息队列 RocketMQ RabbitMQ ActiveMQ 分布式事务 Spring 队列 Java 高级 GC JVM HTTP 网络安全 算法 设计模式 Spring Cloud Web SpringMVC 线程池 并发 锁🔒 多线程 Git Java 集合 Java 基础 MyBatis 数据库 MySQL Java 基础面试题 Java Nginx Linux Spring Boot

IDEA配置类及方法注释模版

发表于 2023-03-05 | 分类于 工具 | 0 | 阅读次数 20

一、类注释

在IDEA中打开 File-Settings,在 Settings中打开Editor-File and Code Templates,在左边的Files中选中Class。

image-1678009985178

如上图,Class编辑框中,编写如下代码:

/**
 * {@code @author} ${user}
 * {@code @create-time} ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}:${SECOND}
 * {@code @version} 1.0.0
 * {@code @description} ${description}
 */

上述代码生成效果如下:

/**
 * {@code @author}
 * {@code @create-time} 2023年03月05日 15:55:51
 * {@code @version} 1.0.0
 * {@code @description}
 */
  • @author: 作者,可以直接写上。也可以配置${user},在创建类时会提示添加。
  • @description: 类描述,可以直接写上。也可以配置${description},在创建类时会提示添加。
  • @version: 版本,可以直接写上。也可以配置${version},在创建类时会提示添加。
  • @create-time:创建日期,可以如上写法自定义格式。

配置完成后,勾选Enable Live Templates。

二、方法注释

在Settings中打开Editor-Live Templates,如下图:

image-1678010273819

1、创建分组 Template Group
点击 " + " 号,选择Template Group,接着在弹出框中设置好这个组的名字,点击确定,例如:myMethodTemplates。

2、在分组里创建一个 Live Template 模版
选中上面我们刚刚创建的分组myMethodTemplates,然后点击 " + " 号,选择Live Template。

3、配置 Live Template 模版
接下来就是创建注释模版了。

**
* {@code @author} $user$
* {@code @create-time} $date$ $time$
* {@code @description} $description$
$param$
$return$
*/

上面配置的效果如下:

    /**
     * {@code @author}
     * {@code @create-time} 2023/3/5 17:27
     * {@code @description} 
     *
     * @param: password - [java.lang.String]
     * @return: org.jasypt.encryption.pbe.config.PBEConfig
     */
    private static PBEConfig cryptoConfig(String password) {
        return new SimpleStringPBEConfig();
    }

3.1、配置Abbreviation Description
上图中Abbreviation设置项 ,是在我们要生成注释时,选择自己的某一个Live Template模版的快捷提示。

什么意思呢?

/x...
public void test(){}

如上,/ 意思是我们要加注释,开头为啥是/后面再说。x 就是Abbreviation中设置的缩写。我们在Template Group中可能还有其他的模版,例如:a 、b等,我们可以根据这个来选择使用不同的模版注释。设置这个缩写也会弹窗提示,就像代码提示那样。

重要提示:不要把Abbreviation设置成斜杠,因为这会导致注释无法获取方法参数。

设置成其他的字母或是符号都可以,这个看个人喜好,最好不要设置成 *(星号),以防我们不需要模版时误导入。

description 是对模版的说明,或是说对这个Abbreviation缩写的说明,防止我们写代码时和要写的代码提示冲突。

3.2、配置Template text
这个就是配置生成的注释的格式:

**
* {@code @author} $user$
* {@code @create-time} $date$ $time$
* {@code @description} $description$
$param$
$return$
*/

如上,开头不要有/,因为会造成方法参数无法获取,我们在方法上面生成注释时,需要先写斜杠,然后再输入Abbreviation设置的模版缩写,这时 IDEA 会提示这个模版。

下面我们对模版进行说明:

例:@author: $user$ 
@author:这个是我们需要配置的项
$user$ :这个可以自己写,也可以使用双$符来标记变量,使用双$符时,在我们配置 Edit variables 时,里面会显示 user 项。

例:$param$
$param$:这个前面没有星号,是因为我们在后续配置 Edit variables 时,表达式里面已经加上了,所以此处不加。

对于模版的格式中的各个项,我们可以根据自己需求去添加。

3.3、配置Edit variables

image-1678011390099

我们点击Edit variables后会弹出Edit variables变量配置框。

Name: 是Template text中的变量名,就是双$符中间的变量。
Expression: 是变量如何获取的表达式。
Default value: 是设置变量的默认值。
Skip if defined: 这一项需要勾选上。

接下来开始讲比较重要的Expression 表达式。IDEA内置了一些表达式,可以点击Expression项后面的箭头查看。我们可以选择IDEA提供的内置表达式,也可以自己写groovyScript来达到自己想要的效果,写完之后复制粘贴进Expression中即可,后面会讲解如何写groovyScript。

接下来讲解几个常用的:

  • user() 会自动获取系统名。
  • date(“yyyy年MM月dd”) date()获取年月日的信息,通过传入格式化方式的字符串来自定义日期格式。
  • time(“HH:mm:ss”) 同date()函数。
  • param return 这两个需要写groovyScript表达式,在下面再讲。

groovyScript表达式:

格式:groovyScript("[逻辑判断代码]",[获取参数表达式(此处为IDEA内置)])

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

IDEA变量表达式使用了groovyScript,上述代码是根据IDEA内置methodParameters()函数获取的值重新处理的成想要的格式。
methodParameters()函数获取的值格式为:[name, age]。

上述代码中:

${_1}获取方法参数。${_1}也就是上述代码末尾的methodParameters(),如果获取参数表达式有两个,可以通过${_2}获取第二个的结果。
然后通过for循环将多个参数分行,形成多个@param。三目运算就是判断是否还有参数,如果有就分行。

@param设置

下面提供几种方法参数的格式:

  • 不带参数类型,例如:@param: name
groovyScript(
    "def result=''; 
    def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); 
    for(i = 0; i < params.size(); i++) {
        result += '* @param: ' + params[i] + ((i < params.size() - 1) ? '\\n ' : '')
    }; 
    return result;"
, methodParameters())
  • 带参数类型,全类名,例如:@param: name - [java.lang.String]
groovyScript(
    "def result=''; 
    def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); 
    def paramTypes=\"${_2}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();  
    for(i = 0; i < params.size(); i++) {
        if(params[i].size() > 0){
            result += '* @param: ' + params[i] + ' - [' +  paramTypes[i] + ']' + ((i < params.size() - 1) ? '\\n ' : '')
        }else{
            result += '* @param: ' + params[i] + ' ' +  paramTypes[i] + ((i < params.size() - 1) ? '\\n ' : '')
        }
    }; 
    return result;"
, methodParameters(), methodParameterTypes())
  • 带参数类型,仅类名,例如:@param: name - [String]
groovyScript(
    "def result=''; 
    def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); 
    def paramTypes=\"${_2}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); 
    for(i = 0; i < params.size(); i++) {
        def types = paramTypes[i].split('\\\\.').toList(); 
        if(params[i].size() > 0){
            result += '* @param: ' + params[i] + ' - [' + types[types.size()-1] + ']' + ((i < params.size() - 1) ? '\\n ' : '')
        }else{
            result += '* @param: ' + params[i] + ' ' + types[types.size()-1] + ((i < params.size() - 1) ? '\\n ' : '')
        }
    }; 
    return result;"
, methodParameters(), methodParameterTypes())

也可以根据自己的格式需求,在groovyScript自行更改。

@return配置

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

关于date相关的,我们可以用IDEA内置的表达式,然后传入自己的格式化规则字符串即可。例如:date("yyyy年MM月dd") time("HH:mm:ss")。

3.4 配置 Options

Options中的Expand with是快捷键的配置,默认是Tap键

3.5 配置模版应用范围

image-1678022464520

图中红色方框处就是配置应用范围的地方,在为配置前为 Define,在配置后为 Change。点击既可以配置。

image-1678022478700

可以选择Everwhere在每一个地方都应用,也可以选择对应的哪一种语言或什么位置会出现Abbreviation缩写弹窗提示。

MYSQL 之DDL、DML、DCL、TCL的区别
什么是 Cookie、Session、Token、JWT
  • 文章目录
  • 站点概览
Adrian

Adrian

曙光在头上,不抬起头,便永远只能看见物质的闪光。

119 日志
11 分类
67 标签
RSS
Creative Commons
Links
  • 美团技术团队
  • 阮一峰
  • 程序猿DD
  • SpringBoot 中文社区
  • 在线文档
  • Bean Searcher
  • OkHttps
  • Grails
  • Sa-Token
  • 程序员的进击之路
  • bugstack 虫洞栈
  • Java 全栈知识体系
  • Gobrs-Async
  • 查询网
  • 微信开放社区
  • 物联网技术指南
  • emqx
  • 看云
  • 深圳核酸检测点查询
  • Hutool
  • Spring
  • V2EX
  • v-charts
  • Vert.x 官方文档
  • Vert.x 官方文档中文翻译
  • 极客时间
  • Apache RocketMQ 开发者指南
  • 知了
  • 阿里云知行动手实验室
  • Learn Git Branching
  • Spring Boot 教程
  • 未读代码
  • 如梦技术
  • jpom
  • Cubic
  • Easy-Es
  • bing-wallpaper
  • solon
  • LuatOS
  • ThingsBoard
  • Linux 中国◆开源社区
  • Apache Dubbo
  • Jenkins
  • 技术文章摘抄
  • VueJS
  • MapStruct
  • elasticsearch 中文社区
  • Apollo(阿波罗)
  • TiKV文档
  • Chrome插件分享
  • 一步步搭建物联网系统(教你设计物联网系统)
  • 全栈增长工程师指南
  • 程序员的自我修养
  • Pro Git(中文版)
  • 学习 Web 开发
  • 极客教程
  • PingCAP 文档中心
  • 酷壳
  • Refactoring Guru 网站
  • 学习 Java 语言
  • smart-doc
  • mybatis-plus
  • 字母哥博客
0%
© 2023 Adrian
由 Halo 强力驱动
|
主题 - NexT.Gemini v5.1.4