IDEA插件开发实战:打造专属的代码生成工具
文章目录
一、重复代码的烦恼:每天写100遍相似代码
上周审核代码时,我发现团队里每个新服务都有这样的结构:
// 用户服务
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public Result<User> getById(@PathVariable Long id) {
return Result.success(userService.getById(id));
}
// 还有save、update、delete... 共15个相似方法
}
// 商品服务(重复造轮子)
@RestController
@RequestMapping("/product")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping("/{id}")
public Result<Product> getById(@PathVariable Long id) {
return Result.success(productService.getById(id));
}
// 又写15个...
}
这就像每次吃饭都要重新捏筷子——明明可以定制一副专属餐具。今天我们就用IDEA插件开发,打造自己的"代码生成筷子"!
二、准备插件工具箱:搭建你的乐高工作台
步骤1:安装插件开发套件(像领取乐高工具箱)
- 在IDEA中安装
Plugin DevKit
插件 - 新建项目 →
IDE Plugin
→ 项目名CodeGenerator
步骤2:配置基础零件(像整理积木分类)
<!-- build.gradle关键配置 -->
plugins {
id 'java'
id 'org.jetbrains.intellij' version '1.13.3'
}
intellij {
version = '2023.1' // 适配IDEA版本
plugins = ['java'] // 依赖的插件
}
dependencies {
implementation 'org.freemarker:freemarker:2.3.32' // 模板引擎
}
步骤3:创建第一个动作(像拼装基础模块)
// 创建生成菜单动作(像乐高底座)
public class GenerateCRUDAction extends AnAction {
@Override
public void actionPerformed(@NotNull AnActionEvent event) {
// 当点击菜单时触发
Project project = event.getProject();
Messages.showMessageDialog(project, <