编写:bravo1988
开头提醒一句:打开你的IDEA跟着做。
部分IDEA可能会出现marketplace(插件应用商城)无法搜索的情况,应该是网络不稳定,可能需要翻墙。
如果实在无法在线下载,备用网盘:IDEA插件 密码:ype8
我的IDEA版本是2019.3。
- 在线安装
可以直接在IDEA的Plugins下载,安装,重启。
- 离线安装



Lombok

这个插件应该是必备的,配合Lombok依赖,可以用@Data、@AllArgsConstructor、@NoArgsConstructor等注解替代getter/setter、全参构造、无参构造,从而让代码变得非常简洁。
Lombok依赖
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
用注解代替getter/setter、构造参数
@Data = getter/setter + toString() + equals() + hashCode()
一个@Data做了这么多事,并不一定是好事。尤其是hashCode(),有时我们并不需要对所有字段进行计算得到hashCode,此时就不宜用@Data自动生成的hashCode()。
我个人的建议是遵从最少依赖原则,你需要什么就加什么。但想偷懒就直接@Data,问题也不大。
有时我们需要私有构造器,也可以通过注解里的属性指定。
值得一提的是Lombok并不会减慢运行速度,因为@Data这些注解是在编译期解析的,底层字节码其实和手写getter/setter是一样的。
另外,Lombok还提供了日志注解@Slf4j,俗称“酸(S)辣(L)粉(F)”。原本我们如果要在程序中进行日志记录,需要这样:
使用@Slf4j:
有两点稍微注意一下:
- 打日志时尽量别用字符串拼接,不够直观且效率低,应该使用{}占位符,用逗号隔开

- @Slf4j只是门面,并没有实际的日志实现,所以Lombok的@Slf4j注解必须配合日志实现类,比如

当然,一般不需要特别注意,毕竟现在都用SpringBoot。
很多人不明白为什么System.out.println()也是打印输出,为什么会效率差?因为System.out.println()是调用系统资源的,而log只是JVM层面的,不涉及状态切换。
关于Lombok的其他用法可以参考:Lombok高级用法
Free MyBatis plugin

主要功能就是实现Mapper接口和Mapper.xml的跳转,还可以根据Mapper接口生成XML文件。但是随着通用Mapper、Mybatis-plus的使用,这插件变得比较鸡肋。当然,如果有些公司会强制查询语句必须手写SQL,此时Free MyBatis plugin就派上用场了。
点击左边绿色箭头可以跳转到Mapper.xml文件。
另外,我们都知道Mapper接口的方法参数要是有多个时,必须加上@Param注解,可以用快捷键生成:
Alibaba Java Coding Guidelines
这是与阿里巴巴团队出版的《阿里巴巴Java开发手册》配套的IDEA插件,可以实时检测代码规范,并给出基本的优化建议。
优点:
- 帮助开发者养成良好的代码规范
- 帮助开发团队形成统一的代码风格
- 尽量减少因为不规范的代码而产生的bug
比如文档注释提醒:
按提示写上注释:
另外,阿里巴巴不推荐尾行注释
改善:
当然,如果字段很多,就会看起来太长了…而启用阿里巴巴规约插件后,你用//注释又会出现很难看的黄色警告,作为折中方案,可以这样写:
因为JDK有时也这样写:
但写起来挺累的。
对了,阿里巴巴规约插件除了规范代码风格,还能对常见的代码给出优化建议:

甚至一些很小的细节(观察代码并思考结果):
类似Integer这些包装类内部设有缓冲区,所以建议包装类之间的比较尽量使用equals(),不要使用==。
用阿里巴巴编码插件后,平时多注意代码中的有色块提示,能帮我们规避很多错误。
如果你觉得这个规约提示有点烦,可以暂时关闭:
GsonFormat

GsonFormat主要用于把JSON字符串转为JavaBean。
使用场景:
当我们和外部系统对接时,调用第三方接口得到JSON数据后,希望在我们项目中创建对应的Bean来接收response结果时,这个插件就相当有用。
JSON结果:
{
"code": 200,
"message": "成功",
"data": {
"id": 199,
"status": 1,
"createTime": "2020-01-13T10:33:02.000GMT+08:00",
"updateTime": "2020-01-13T10:33:21.000GMT+08:00",
"isDelete": 1,
"page": 1,
"pageSize": 10,
"userId": 49,
"templetName": "测试模板",
"templetId": 20,
"resumeStyle": 3,
"name": "bravo",
"mobile": "182575xxxxx",
"email": "52xxxxxxx@qq.com",
"address": "杭州市西湖区"
},
"serverTime": 1579140259345
}
拷贝上面的JSON,打开IDEA,新建一个POJO:

还可以对字段进行调整:
点击“OK”,快速在当前POJO内部生成字段:
POJO to Json

与GsonFormat相反,这个插件用于POJO转JSON。
使用场景:
我们写完后端接口后,必须自测,以减少联调时不必要的bug。有时候我们的POJO实在太复杂,GET/DELETE请求还好,参数很简单,测一下也不是什么麻烦事。但是POST请求需要我们在Postman里写JSON,很多人往往嫌麻烦,就不测了。
比如:
把光标放在类名上,右键转化成JSON:
JSON内容会自动复制到剪贴板上,此时回到Postman黏贴JSON:
补充参数后即可发送POST请求测试。
缺点:
对于级联Bean,由于会陷入递归操作,程序拒绝生成JSON:
提示错误:
如果后端使用Swagger2自动生成接口文档的话,可以直接在swagger做简单的测试,会方便很多。
RestfulToolKi

显示项目中所有Controller方法的URL,方便快速查找API接口,点击跳转方法
场景:
一个项目太大了,有时我们想寻找同事写的某个API接口所在的类,需要看接口文档或者double shift模糊搜索,而RestfulToolKi旨在帮助程序员快速定位API接口。
command+\还能调出搜索框:
实在太方便了!!
如果你还是喜欢Postman测试,可以方法名上右键复制URL,在参数类型类型上右键复制JSON数据。
拷贝URL:http://localhost:8080/insertSuperman
拷贝JSON:
{
"id": 1,
"name": "demoData",
"open": true,
"pid": 1,
"level": 1,
"children": {
"id": 1,
"name": "demoData",
"open": true,
"pid": 1,
"level": 1
}
}
然后就可以快乐地改bug了。
GenerateAllSetter

在我们new一个POJO后,帮助我们自动创建所有setter方法。
场景:
在实际开发中,我们经常需要在创建一个POJO后,为这个POJO设置所有字段(或部分)。于我而言,会担心是否存在有些字段忘了设置…此时这个插件就派上用场了。
把光标放在tipDto变量上,option+enter:
结果:
另外,Lombok其实有一种build模式:
已经设置的字段就不会在预选框里出现:
但是单纯从设置字段角度看,还是GenerateAllSetter方便。而且Lombok的builder模式有两个大坑:
- 用了@Builder就无法使用new Person()这种无参构造了,别的同事不熟悉的话,会很烦
- Controller返回结果时Person对象无法序列化为JSON
解决办法分别是:加@NoArgsConstructor、加@Setter(或者你本身有@Data)
个人还是很讨厌@Builder的,如果只是为了方便set数据,建议使用@Accessors(chain = true)
@Accessors(chain = true)
@Getter@Setter
public class LombokUser {
private String name;
private Integer age;
private Integer height;
}

但@Accessors(chain = true)链式调用的缺点是set过的数据还是会出现在备选框里。
所以,为了这点鸡毛蒜皮的功能在那引入各种新注解,挺没意思的。GenerateAllSetter一键生成就好了,如果设置字段过多,链式set也不见得比普通的setter优雅多少。
MyBatis Log Plugin

根据控制台SQL的Log信息生成可执行SQL语句
场景:
测试时,我们发现一个接口结果不对,但是找了半天发现代码并没有什么错误,于是打算去数据库运行SQL,排查是否SQL语句本身有问题。此时,我们不得不在Navicat上面手写SQL,这样比较费时。
其实项目本身肯定有SQL的日志级别,比如:
# mapper
mybatis.mapper-locations=classpath:mapper/**/*.xml
logging.level.cn.wisejob.company=DEBUG
此时,控制台每次都会有SQL输出:
选中指定的SQL信息,右键生成可执行SQL语句:
拷贝即可:
在Navicat执行:

