共计 2175 个字符,预计需要花费 6 分钟才能阅读完成。
java 培训 开发过程常常须要编写有固定格局的代码,例如说申明一个公有变量,logger 或者 bean 等等。对于这种小范畴的代码生成,咱们能够利用 IDEA 提供的 Live Templates 性能。刚开始感觉它只是一个简略的 Code Snippet,起初发现它反对变量函数配置,能够反对很简单的代码生成。
上面我来介绍一下 Live Templates 的用法。
根本应用
IDEA 自带很多罕用的动静模板,在 Java 代码中输出 fori,回车就会呈现
for (int i = 0; i < ; i++) {
}
按 Tab 能够在各个空白处跳转,手动填值。
自定义 Template
官网自带模板毕竟不能满足咱们集体编码格调的须要,Live Templates 提供了变量函数的形式供咱们自定义。
简略用法
新增自定义模板,首先须要填写触发单词(即 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 可能感知代码的语义,例如说以后编辑的函数的参数。但这一点就可能让咱们玩出花来。咱们从易到难来钻研模板函数的性能。
后面咱们提到的变量能够绑定函数,配置形式如上图所示。
疾速申明变量
申明变量是一个罕用的操作,特地是须要申明变量须要加注解,正文的时候,这些代码写起来就很干燥。上面是我定义的模板:
<osgiRef>
/**
- $END$
*/
@OsgiReference
@Setter
private $TYPE$ $NAME$;
乍一看这个模板跟我下面定义的 privateField 差不多,惟一的不同在于我给这些变量绑定了函数。
clipboard():返回以后粘贴板的字符串
decapitalize():将输出的字符串首字母变为小写
上面咱们演示一下,咱们先拷贝以后类名,而后输出 osgiRef
疾速申明 logger
申明 logger 也是一个罕用的操作,下面咱们是利用了粘贴函数来疾速申明变量,当初咱们来利用另一个函数 className(),顾名思义,它的作用就是返回以后类名。
<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 绑定 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()),就可能主动将以后函数的参数格式化后输入。