ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

进阶玩法:用intellij-generateAllSetMethod的Velocity模板定制你自己的代码生成规则

进阶玩法:用intellij-generateAllSetMethod的Velocity模板定制你自己的代码生成规则 进阶玩法用intellij-generateAllSetMethod的Velocity模板定制你自己的代码生成规则【免费下载链接】intellij-generateAllSetMethodIntellij plugin to generate call to setter method value for class项目地址: https://gitcode.com/gh_mirrors/in/intellij-generateAllSetMethodintellij-generateAllSetMethod 是一款 IntelliJ IDEA 插件能一键为类的所有字段生成 setter 默认值调用。更强大的隐藏能力是它内置了 Velocity 模板引擎让你不用写一行 Java 代码就能自定义代码生成规则——想生成什么代码写个模板就行。为什么你需要自定义生成模板插件自带的生成功能全量 setter、getter、Builder、Converter已经覆盖大部分场景但真实项目里总有一些个性化需求只想给部分字段赋默认值其余字段跳过默认值要按团队规范来比如时间统一LocalDateTime.now()、金额统一new BigDecimal(0)生成代码时自动带上注释、断言或日志语句生成非 setter 类的代码片段比如初始化集合的样板代码这些需求改源码不现实而 Velocity 模板让你配置即生效。3 步开启 Velocity 模板生成第 1 步打开设置面板勾选模板开关进入Settings → Tools → GenerateAllSetter勾选Generate by template选项。这一项的开关逻辑定义在 GenerateAllSetterSettingForm.java 中。第 2 步新建模板并编写内容点击工具栏的Add按钮输入一个模板名称在右侧带语法高亮的编辑器中编写 Velocity 模板编辑器按.vm文件类型渲染写起来很舒服左侧列表支持多个模板并存点选即可切换编辑不想要的模板用删除按钮移除模板的增删与持久化状态保存在 GenerateSetterState.java重启 IDE 后不会丢失。第 3 步在变量上触发 Generate by template把光标放在一个局部变量上按AltEntermacOS 为 OptionEnter选择Generate by template意图。插件会弹出模板选择对话框实时渲染出生成结果确认后插入到代码中。这一步的入口实现见 GenerateByTemplateAction.java渲染对话框见 TemplateDialog.java。模板变量速查表只有 2 个核心变量很多人以为模板变量会很多实际上模板上下文只注入了两个变量见 VelocityUtils.java其余都能从类对象上取到变量类型说明$theClassPsiClass变量所属的类可通过$theClass.methods、$theClass.fields遍历成员$variableNameString当前触发意图的局部变量名常用取法$theClass.methods—— 遍历所有方法可配合#if($method.name.startsWith(set))过滤 setter$method.parameterList.parameters[0].getType().canonicalText—— 拿到 setter 参数类型的完整类名官方文档中的模板自定义说明也提供了变量对照表读懂内置模板10 分钟学会语法项目仓库里就躺着一份可直接抄作业的内置模板 template.vm它实现了给每个 setter 按类型赋默认值的完整逻辑。核心套路就三板斧#foreach($method in $theClass.methods) #if($method.name.startsWith(set) $method.hasParameters()) #set($parameterType$method.parameterList.parameters[0].getType().canonicalText) #if($parameterType.equals(java.util.Date)) #set($defaultValuenew Date()) #else #set($defaultValuenull) #end $variableName.${method.name}(${defaultValue}); #end #end#foreach ... #end遍历类的所有方法#if / #elseif / #else按参数类型分发默认值内置模板为Float、BigDecimal、LocalDate等二十多种类型都写了规则#set定义局部变量$variableName.${method.name}(...)变量插值拼出user.setName(...)这样的调用你只需要照着内置模板改条件分支就能得到自己的生成规则。一键 Debug改完模板立即看效果不用退出设置页去写测试代码——面板上有一个Debug按钮输入任意一个项目里存在的类名点一下插件会立即用该类和示例变量名demo渲染你的模板并把结果弹窗展示出来。这个所见即所得的调试闭环来自 GenerateAllSetterSettingForm.java 中 Debug 按钮的监听器调用的还是同一个 VelocityUtils.java 渲染入口。⚠️小提示如果模板写错了VelocityUtils会把异常堆栈直接放进生成的文本里返回——看到 catch exception when generate 开头的输出就说明模板语法有问题按堆栈提示修正即可。总结自定义模板 勾选Generate by template 建模板 AltEnter 选 Generate by template三步完成核心变量只有$theClass和$variableName其余信息都能从类对象上取照着内置 template.vm 改条件分支就是最快的上手路径用 Debug 按钮实时预览模板零试错成本掌握 Velocity 模板后intellij-generateAllSetMethod 从好用的插件变成了你的私人代码生成器值得每个重度 IDEA 用户花十分钟体验一下。【免费下载链接】intellij-generateAllSetMethodIntellij plugin to generate call to setter method value for class项目地址: https://gitcode.com/gh_mirrors/in/intellij-generateAllSetMethod创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表