强大的idea代码生成(代码片段)

xhmj12 xhmj12     2023-02-03     458

关键词:


 

 

 
作者:Sharehub
来源:blog.xiaohansong.com/idea-live-templates.html

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

下面我来介绍一下Live Templates的用法。

基本使用

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

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


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

自定义 Template

官方自带模板毕竟不能满足我们个人编码风格的需要,Live Templates提供了变量函数的方式供我们自定义。搜索公众号互联网架构师后台回复“2T”,获取一份惊喜礼包。

简单用法

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

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

==========
<out>
----------
System.out.println($END$)
==========
<pfs>
----------
private final static String $varName$ = "$var$";`
==========
<privateField>
----------
/**
 * $COMMENT$
 */
@Getter
@Setter
private $TYPE$ $NAME$;
==========
<main>
----------
public static void main(String[] args) 
     $END$

==========

模板支持变量的定义,使用$$包围的字符表示一个变量。$END$是一个特殊的预定义变量,表示光标最后跳转的位置。每个变量的位置都可以跳转过去。

高级用法

如果你用过 vim 的Code Sinppet插件,你会发现模板里面是可以执行函数的,强大的 Live Templates当然也支持,而且 IDEA 能够感知代码的语义,例如说当前编辑的函数的参数。但这一点就能够让我们玩出花来。我们从易到难来研究模板函数的功能。搜索公众号互联网架构师后台回复“2T”,获取一份惊喜礼包。

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

快速声明变量

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

<osgiRef>
----------
/**
 * $END$
 */
@OsgiReference
@Setter
private $TYPE$ $NAME$;

乍一看这个模板跟我上面定义的privateField差不多,唯一的不同在于我给这些变量绑定了函数。

下面我们演示一下,我们先拷贝当前类名,然后输入osgiRef

快速声明 logger

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

搜索公众号互联网架构师后台回复“2T”,获取一份惊喜礼包。

<logger>
----------
/** logger */
private static final Logger LOGGER = LoggerFactory.getLogger($CLASS$.class);

最强大的 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。

快速打印当前上下文信息

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

<printContext>
---------------
LogUtil.$TYPE$(LOGGER, "$MSG$ " + $params$);

将params绑定到groovyScript("'\\"' + _1.collect it + ' = [\\" + ' + it + ' + \\"]'.join(', ') + '\\"'", methodParameters()),就能够自动将当前函数的参数格式化后输出。

总结

上面我们简单介绍了常用的模板函数,其实 IDEA 还有很多其它模板函数,具体参考Creating and Editing Template Variables。

https://www.jetbrains.com/help/idea/2016.3/creating-and-editing-template-variables.html

IDEA 是一个很强大的工具,善用工具能够极大的提高工作效率,将精力投入到关键的事情上,而不是将时间浪费在编写重复代码上面。一些更高级的用法还有待大家去发掘。最后推广一波我写的代码生成插件CodeMaker,好好利用也能节省很多重复编写代码的时间。

PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看。

PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。

强大的idea代码生成(代码片段)

...一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用IDEA提供的LiveTemplates功能。刚开始觉得它只是一个简单的CodeSnippet,后来发现它支持变量函数配置,可以支持很复杂的代码生成。下面... 查看详情

代码生成利器:idea强大的livetemplates

... logger 或者 bean 等等。对于这种小范围的代码生成,我们可以利用IDEA提供的 LiveTemplates 功能。刚开始觉得它只是一个简单的 CodeSnippet ,后来发现它支持变量函数配置,可以支持很复杂的代码生成。... 查看详情

备忘idea的那些事(代码片段)

...一直在推荐使用eclipse,于是很多人就这样错过了Idea这样强大的IDE工具。本文将会对于Idea和Idea的一些常见(实际上,很多是Jetbrain系列IDE的代表性操作)操作进行一些介绍。Jetbrain&IdeaJetbrainJetbrain是捷克的一家企业(Jetbrain官... 查看详情

推荐一款idea代码生成神器,写代码效率翻倍!(代码片段)

Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。1、安装(EasyCode)我这里的话是已经那装好了。建议大家在安装一个插件,叫做Lombok。Lombok能通过注解的方式,在编译时自... 查看详情

不得不知的idea实用小技巧(代码片段)

前言人人都说IDEA好,但你知道他的强大之处在哪儿么?今天就来看看,增进日常开发效率的IDEA小技巧。代码编辑复制&粘贴我们知道,最常用的复制粘贴是通过Ctrl+C/V,但如果要针对复制历史进行粘贴... 查看详情

2.idea使用less转微信wxss(代码片段)

...dea使用less转微信wxss作为java后端开发者平时使用的工具是强大的idea,使用习惯了之后,便不再习惯使用其他开发工具了,尤其是各种软件的快捷键各不同,给开发者也带来了很大不便.由于最近在写微信小程序的时候要转为wxss,使用less... 查看详情

推荐一款idea生成代码神器,写代码再也不用加班了!(代码片段)

...成entity,controller,service,dao,mapper,无需任何编码,简单而强大。1、安装(EasyCode)我这里的话是已经那装好了。建议大家在安装一个插件 查看详情

idea的强大

由于朋友推荐,转战IDEA数日,发现一个字就是,牛,完爆任何开发工具,让你代码上瘾的工具。它集合了所有的开发所需要的东西,且智能化方便,适合开发有一定经验的人去使用,你会爱上它。下面是快捷键的使用大全的一... 查看详情

idea高效找出全部未被使用的代码(代码片段)

不得不说idea真的很强大,认真花一些时间,好好研究研究idea 可以让你编写代码更加的高效,并且idea 时不时会给你一些惊喜的,比如今天要分享的这个,就非常的惊喜;背景前几天,忽然又一个朋友问了一个问题:idea... 查看详情

intellijidea使用基本设置与类方法模板设置(代码片段)

...做Maven项目的时候要用IntelliJIDEA,据说这个idea功能非常的强大,最近在使用的时候发现如果适应的真的是非常的强大。感觉是比Eclipse强大的多。收费的就是不一样。回到顶部(gototop)一、基本设置1.1、关闭IntellijIDEA自动更新  ... 查看详情

intellijidea的安装配置(代码片段)

...便捷、快速。2:提示的功能更加广泛。3:拥有更强大整合能力。如:Maven、Spring等。4:好用的快捷键和代码模块。5:能实现更精准的搜索。IDEA的下载地址:(建议去官网下载)链接:IDEA官网下载.... 查看详情

为什么选择intellijidea作为日常开发工具(代码片段)

...ntellijIDEA,刚开始其实并不想怎么用。毕竟Eclipse已经足够强大,可以满足日常开发的需求,何必再花时间再去学习其他工具那。刚开始改变是困难的。但是没办法,公司强制使用,不得不去了解去使用。后来用了一段时间才发现... 查看详情

idea通过database操作连接数据库(代码片段)

...给大家,也是相当于一种数据库的简易客户端了,功能也很强大首先新建一个java项目选择数据源中的MYSQL填写基本信息,点击测试连接,点击下面的设置属性applyok然后一个简易版的客户端就出现了,左边可以写sql语句.右边可以查看数... 查看详情

mybatis代码生成器(idea,maven)及配置详解(部分配置你应该不知道)(代码片段)

...当然不希望做那么多。还好,mybatis为我们提供了强大的代码生成--MybatisGenerator。通过简单的配置,我们就可以生成各种类型的实体类,Mapper接口,MapperXML文件,Example对象等。通过这些生成的文件,我们就可以方便的进行单表进... 查看详情

csharp强大的枚举。(代码片段)

查看详情

12个idea超神奇淫小技巧,超实用!(代码片段)

...a开发中重度使用IDE患者,IntellijIDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对IntellijIDEA的喜爱,看看我是如何将IDEA这个工具用的更得心应手的。本文有 查看详情

12个idea超神奇淫小技巧,超实用!(代码片段)

...a开发中重度使用IDE患者,IntellijIDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对IntellijIDEA的喜爱,看看我是如何将IDEA这个工具用的更得心应手的。本文有 查看详情

textacf画廊的强大表格(代码片段)

查看详情