IntelliJ IDEA 自定义 getter & setter 模板
使用 Spring 框架并且使用 Swagger 自动生成接口文档。
使用 @ApiModelProperty
注解给属性设置说明时发现部分 boolean
型的备注都没显示出来。
比如下面属性:
java
@ApiModelProperty("是否锁定")
private boolean isLock;
public boolean isLock() {
return isLock;
}
public void setLock(final boolean lock) {
isLock = lock;
}
可以发现 getter&setter 方法跟别的属性不一样,getter 方法名前面没有 get,setter 方法名中 is 被删掉了。
如果改成 getIsLock&setIsLock 方法,则属性说明就能正常显示了。
于是就想到修改对应的模板代码。
在 class 中点击 Alt + INS
键,选择 getter and setter ,在上部可以看到 Getter Templater 和 Setter Templater,点击对应右边的按钮可以打开编辑画面。
为了对比,先看一下默认的 getter&setter 方法的模板代码:
default getter
javascript
#if($field.modifierStatic)
static ##
#end
$field.type ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
#if ($StringUtil.startsWithIgnoreCase($name, 'is'))
#set($name = $StringUtil.decapitalize($name))
#else
is##
#end
#else
get##
#end
${name}() {
return $field.name;
}
default setter
javascript
#set($paramName = $helper.getParamName($field, $project))
#if($field.modifierStatic)
static ##
#end
void set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
$field.name = $paramName;
}
修改之后的模板代码:
customize getter
javascript
#if($field.modifierStatic)
static ##
#end
$field.type ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($field.name)))
get##
${name}() {
return $field.name;
}
customize setter
javascript
#set($paramName = $field.name)
#if($field.modifierStatic)
static ##
#end
void set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($field.name))($field.type $paramName) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
$field.name = $paramName;
}
使用新模板后生成的代码:
java
public boolean getIsLock() {
return isLock;
}
public void setIsLock(final boolean isLock) {
this.isLock = isLock;
}