工欲善其事,必先利其器。IDEA是Java后端程序员必备的开发IDE,上面有着丰富的插件可以大大提升开发效率,这篇文章推荐几个我认为不错的IDEA插件
1.Lombok
Lombok是个很优秀的插件,也是我安装IDEA后最先安装的插件,它方便快捷,用注解和模板代码的形式让代码非常简洁。
首先搜索插件,安装,
使用时也非常方便,这是一个常用的例子,也是我比较喜欢使用的,首先@Data相当于生成了成员变量的get/set方法,然后链式赋值的写法会让初始化一个类特别的方便,代码也十分优雅。
@Data
@Accessors(chain = true)
@NoArgsConstructor
public class TestLombok {
private String name;
private Integer age;
public static void main(String[] args) {
TestLombok lombok = new TestLombok().setAge(10).setName("j4fan");
System.out.println(lombok.getName());
}
}
除此之外还有@Builder(建造者的形式初始化类),@SneakyThrows(欺骗Jvm编译时忽略报错,慎用)等其他注解。
当然Lombok被网友喷的也很惨,很多人不愿意用,有以下原因:
- 传染性 即如果你的代码使用了Lombok,其他依赖于你jar包的项目也需要使用Lombok才可以看你的源码。这对于开源软件或者大型组织里的软件确实有些向别人强推的意思。
- 代码可读性 这里通常说的是例如用了@Data,就无法像以前那样点set方法,右键findUsage就可以找到使用set方法的代码了。
- 隐形规则带来的潜在bug。例如@Data注解的类如果是某父类的子类,equals函数默认是不看父类的属性的。这和我们的期望不符,还需要添加@EqualsAndHashCode(callSuper = true)
@Data
public abstract class TestFather {
protected String lastName;
}
@Data
//@EqualsAndHashCode(callSuper = true)
public class TestSon extends TestFather {
private String firstName;
public static void main(String[] args) {
TestSon a = new TestSon();
TestSon b = new TestSon();
a.setLastName("fan1");
b.setLastName("fan");
a.setFirstName("ff");
b.setFirstName("ff");
System.out.println(a.equals(b)); //结果为true
}
}
类似上面的例子在去掉@EqualsAndHashCode(callSuper = true)注解时,结果为true。
可以说使用的方便性也带来了维护的潜在难度,是否使用Lombok只能说见仁见智,合理使用避免bug的基础上能加快开发效率才是最好的。
2.CodeGlance
当一个Class文件特别大的时候,拖动这样的一个侧边栏,即可帮助我们快速定位到需要的位置。效果如图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e45dff403b2abb44cda888f65fc0b14b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/aea8ee403151988a724e1d0249c45054.png)
3.Rainbow Brackets
RainbowBrackets可以帮助你方便的区分大小括号的层级。效果如图:
这对于括号层级很多的代码,可以方便区分自己的代码在哪个括号范围内。
4.RestfulToolkit
有些小伙伴刚接手新的web项目,希望一次性知道项目controller的入口都在哪里,或者对外开放哪些接口,这个工具可以轻松实现,对Spring体系的接口都有效。
使用时,点开右边的侧边栏,可以查看到项目中所有的接口列表,点击接口会跳转到具体代码,同时可以对接口进行测试。
5.GsonFormat
将json转为Java类的插件,避免了一个个创建成员变量的麻烦。
假如我们有如下一个json需要生成Java的类
{
"code": 200,
"data": {
"records": [
{
"brandId":521692,
"brandName":"安佳"
},
{
"brandId":513500,
"brandName":"果実生活"
}
],
"page": 1,
"pageSize": 10,
"pageCount": 2,
"totalCount": 20
},
"message":"查询成功"
}
我们可以新建一个空的类TestJsonFormat,如下操作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3123c5d6de1d805bc2e6d0547f73025b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d33665f666d257f580b417a7091d699c.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6253f2f9797f62cece97b6e320f5ae4b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d84bd5836aadfc34519cafb2bf554084.png)
6.AlibabaCloudTookit
这个工具可以说是神器,在IDEA中有这样一款用于轻量级部署的工具,真的对阿里出品的东西是大写的服(btw在热搜榜单看到了AmazonCloudTookit,不知道两者是否有千丝万缕的关系)。
首先它的基础功能可以帮你替代终端工具例如XShell,只需在Host中添加登录所需的必要信息,即可快速登录服务器。
点击terminal即可登录服务器,点击upload即可快速向服务器指定目录上传本地文件,避免写scp的麻烦。
同样还有轻量级的CI功能,如果是个人应用可以省去了引入jenkins的麻烦,点击deploy to Host
,填写jar包部署目录,写好脚本,之后便可一键部署,非常之方便。
除了部署在服务器上指定路径下,也可以部署在Docker中。
当然这是阿里的插件,对阿里云上的产品有更快捷的功能,例如ECS,RDS部署等,有兴趣可以自己研究。
7.jclassLib
jclasslib是反汇编的插件,类似于javap -c
的功能,可以查看类的汇编码,对于了解常量池,以及同步块等需要查看汇编指令的知识时可以使用。
使用方法很简单,安装完成后,View->Show ByteCode With JclassLib
即可
8.MavenHelper
这个插件就不多说了,可以参考我的这篇文章
如何解决Maven依赖冲突
9.Findbugs/SonarLint/AlibabaJavaCodingGuidelines
这类代码检查的插件也不少,功能都是差不多的,按需选择吧,我目前用的是SonarLint,对有问题的代码都会有响应的提示。
以上是我经常使用并且认为可以提高开发效率的插件,希望能给大家的开发带来帮助,提升开发体验。
祝大家编码愉快,工作愉快,欢迎关注我的公众号,一起分享交流,下篇再见!