强大的 IDEA 代码生成器,学会用,真香!

强大的 IDEA 代码生成器,学会用,真香!

关注我们,设为星标,每天7:30不见不散,架构路上与您共享


回复”架构师“获取资源


前言

Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。刚开始觉得它只是一个简单的Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码生成。下面我来介绍一下Live Templates的用法。

基本使用

IDEA 自带很多常用的动态模板,在 Java 代码中输入fori,回车就会出现

   
   
   
for (int i = 0; i < ; i++) {

}
强大的 IDEA 代码生成器,学会用,真香!

img
按Tab可以在各个空白处跳转,手动填值。

自定义 Template

官方自带模板毕竟不能满足我们个人编码风格的需要,Live Templates提供了变量函数的方式供我们自定义。

简单用法

新增自定义模板,首先需要填写触发单词(即 Abbreviation),描述是可选的,然后定义模板的上下文,点击define选择Java,这样在编辑 Java 的时候就会触发当前模板,定义完上下文之后,就可以填写模板了。
强大的 IDEA 代码生成器,学会用,真香!

img
下面列举几个我常用的简单模板

   
   
   
==========
<out>
----------
System.out.println($END$)
==========
<pfs>
----------
privatefinalstatic String $varName$ = "$var$";`
==========
<privateField>
----------
/**
* $COMMENT$
*/

@Getter
@Setter
private $TYPE$ $NAME$;
==========
<main>
----------
public static void main(String[] args) {
$END$
}
==========
模板支持变量的定义,使用$$包围的字符表示一个变量。
是一个特殊的预定义变量,表示光标最后跳转的位置。每个变量的位置都可以跳转过去。

高级用法

如果你用过 vim 的Code Sinppet插件,你会发现模板里面是可以执行函数的,强大的 Live Templates当然也支持,而且 IDEA 能够感知代码的语义,例如说当前编辑的函数的参数。但这一点就能够让我们玩出花来。我们从易到难来研究模板函数的功能。
强大的 IDEA 代码生成器,学会用,真香!

img
前面我们提到的变量可以绑定函数,配置方式如上图所示。

快速声明变量

声明变量是一个常用的操作,特别是需要声明变量需要加注解,注释的时候,这些代码写起来就很枯燥。下面是我定义的模板:

   
   
   
<osgiRef>
----------
/**
* $END$
*/

@OsgiReference
@Setter
private $TYPE$ $NAME$;
乍一看这个模板跟我上面定义的privateField差不多,唯一的不同在于我给这些变量绑定了函数。
1.clipboard():返回当前粘贴板的字符串
2.decapitalize():将输入的字符串首字母变为小写
下面我们演示一下,我们先拷贝当前类名,然后输入osgiRef
强大的 IDEA 代码生成器,学会用,真香!

img

快速声明 logger

声明 logger 也是一个常用的操作,上面我们是利用了粘贴函数来快速声明变量,现在我们来利用另一个函数className(),顾名思义,它的作用就是返回当前类名。

   
   
   
<logger>
----------
/** logger */
privatestaticfinal Logger LOGGER = LoggerFactory.getLogger($CLASS$.class);
强大的 IDEA 代码生成器,学会用,真香!

img

最强大的 groovyScript()

如果说上面用到的函数提供的能力有限,不够灵活,那么groovyScript()提供了一切你想要的能力,它支持执行 Groovy 脚本处理输入,然后输出处理后的字符串。

   
   
   
groovyScript("code", ...)

| code | 一段Groovy代码或者Groovy脚本代码绝对路径 |
| ... | 可选入参,这些参数会绑定到`_1, _2, _3, ..._n`, 在 Groovy 代码中使用。|
下面我们来看一下它的实际应用。

快速 bean 配置

新增一个服务都要在 Spring 中注册一个 bean,一般这个配置无非就是将指明id和class,由于我们是在 xml 中配置,所以不能利用className()函数,但是我们可以利用clipboard()函数获取到类的全引用,在 IDEA 中我们直接右键类名,点击Copy Reference就行。然后执行 groovy 脚本获取类名。

   
   
   
<bean>
----------
<bean id="$id$"class="$REF$" />
id绑定decapitalize(groovyScript(“_1.tokenize(‘.’)[-1]”, clipboard())),首先取clipboard()的值得到类的全引用,然后执行 groovy 代码_1.tokenize(‘.’)[-1](按.分割为字符串数组,然后取最后一个即可得到类名,然后用decapitalize()将首字母小写即可得到id。
强大的 IDEA 代码生成器,学会用,真香!

img

快速打印当前上下文信息

打印错误日志的时候需要打印当前上下文信息的,例如说入参,有时候入参很多的时候,写起来很痛苦,好在有模板函数methodParameters(),返回当前函数参数的列表,当然这个列表我们不能直接使用,需要结合groovyScript对它进行转化。

   
   
   
<printContext>
---------------
LogUtil.$TYPE$(LOGGER, "$MSG$ " + $params$);
将params绑定到groovyScript(“‘”‘ + _1.collect { it + ‘ = [” + ‘ + it + ‘ + “]’}.join(‘, ‘) + ‘”‘”, methodParameters()),就能够自动将当前函数的参数格式化后输出。
强大的 IDEA 代码生成器,学会用,真香!

img

总结

上面我们简单介绍了常用的模板函数,其实 IDEA 还有很多其它模板函数,具体参考Creating and Editing Template Variables(https://www.jetbrains.com/help/idea/2016.3/creating-and-editing-template-variables.html)。IDEA 是一个很强大的工具,善用工具能够极大的提高工作效率,将精力投入到关键的事情上,而不是将时间浪费在编写重复代码上面。一些更高级的用法还有待大家去发掘。最后推广一波代码生成插件CodeMaker(https://github.com/x-hansong/CodeMaker),好好利用也能节省很多重复编写代码的时间。

强大的 IDEA 代码生成器,学会用,真香!

到此文章就结束了。如果今天的文章对你在进阶架构师的路上有新的启发和进步,欢迎转发给更多人。欢迎加入架构师社区技术交流群,众多大咖带你进阶架构师,在后台回复“加群”即可入群。








强大的 IDEA 代码生成器,学会用,真香!

第一期打卡送书5本+1个腾讯视频VIP月卡(11月1日-12月1日)



这些年小编给你分享过的干货

《IDEA 2020.2 最新破解教程,有效期到2089年

Kubernetes的前世今生

你们公司的架构师是什么样的?

《Docker与CI持续集成/CD持续部署》

《还有40天,Java 11就要横空出世了》

《JDK 10 的 109 项新特性》

《学习微服务的十大理由》

《进大厂必须掌握的50个微服务面试问题》


强大的 IDEA 代码生成器,学会用,真香!

强大的 IDEA 代码生成器,学会用,真香!

转发在看就是最大的支持❤️

本文分享自微信公众号 – Java架构师社区(mush_java_jg)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2456.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • idea 2022.01.4 mac激活码(JetBrains全家桶)2022.02.23

    (idea 2022.01.4 mac激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlHCIQ56F36O-eyJsaWN…

  • python resize函数怎么用_python cv2.resize函数high和width注意事项说明「建议收藏」

    在opencv中获取图片的尺寸的方法是:importcv2img=cv2.imread(path)img.shape返回的是三维数组(high,width,3),当我们需要对图像进行缩放时需要用到cv2.resize()函数:#缩放到原来的二分之一img=cv.resize(img,(int(width/2),int(high/2)))此时需要传入的形状又是(width,…

  • virsh查看虚拟网络信息_kvm创建虚拟机

    virsh查看虚拟网络信息_kvm创建虚拟机1.virsh查看/管理虚拟机问题本案例要求熟悉KVM虚拟化的virsh管理工具的的基本使用,从命令行来操作虚拟机,完成以下基本任务:1)查看KVM服务器信息2)列出有哪些虚拟机、指定虚拟机的状态3)基本的开关机操作4)将虚拟机设置为自动运行方案virsh命令行管理的常见用法:1)virsh:直接进交互模式2)virshnodeinfo:查看KVM节点(服务器)信息3…

  • RAII_ras raf

    RAII_ras rafhttp://baike.baidu.com/link?url=DUGlzCMqyZ2aInTkdpGWqW0f53fL-LWLu9nD3rGoJClIUb8rssh8oCALOhad7MDAWkqEhdfUzPU72jvQeDx5KK目录1RAII简介2RAII的分类3RAII实际应用4RAII与STL容器1RAII简介RAII[1]

    2022年10月23日
  • mediumtext_mysql数据类型介绍(含text,longtext,mediumtext说明) | 学步园[通俗易懂]

    mediumtext_mysql数据类型介绍(含text,longtext,mediumtext说明) | 学步园[通俗易懂]由MySQL支持的列类型列在下面。下列代码字母用于描述中:M指出最大的显示尺寸。最大的合法的显示尺寸是255。D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。方括号(“[”和“]”)指出可选的类型修饰符的部分。注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。TINYINT[(M)][UNSIG…

  • god is a girl歌词_god is a girl上天不公是什么梗

    god is a girl歌词_god is a girl上天不公是什么梗godisagrilRememberingme,discoverandseeAllovertheworld,  记得我在世界上寻找而发现  Shesknownasagirltothosewhoafree,  她是一个想要得到自由的女孩  ThemindshallbekeyForgottenasthepast  思想将被封锁

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号