Lombok

Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。

  1. idea下载安装插件

  2. 在使用之前需要添加一下依赖:

    1
    2
    3
    4
    5
    6
    7
    <!-- Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率 -->
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
    </dependency>

POJO类常用注解

  • @Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等
  • @ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段
  • @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode
  • @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常
  • @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性 - (staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限)
    • @NoArgsConstructor:生成无参构造器
    • @RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器
    • @AllArgsConstructor:生成全参构造器
  • @Data:作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
  • @Builder:作用于类上,将类转变为建造者模式
  • @Log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解

其他重要注解

  • @Cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象

  • @SneakyThrows:可以对受检异常进行捕捉并抛出

  • @Synchronized:作用于方法级别,可以替换synchronize关键字或lock锁,用处不大

Maven Helper

可以很方便的处理Maven依赖冲突

MybatisX

除了全局搜索以外,如何方便地在Mybatismapper Java接口方法和mapper XML文件之间来回切换?

功能

  • Java 与 XML 调回跳转
  • Mapper 方法自动生成 XML

计划支持

  • 连接数据源之后 xml 里自动提示字段
  • sql 增删改查
  • 集成 MP 代码生成
  • 其他

stackoverflow

这个插件其实是最实用的插件,程序猿遇到的问题,基本都能找到回答,但是它使用的是google搜索引擎,对于,不购买vpn的同学来说,感觉好鸡肋呀~

选中需要搜索的问题,然后,右键点击查询 - 用StackoverFlow搜索的话个人觉得比用google 更精准

CodeGlance

CodeGlance是一款非常好用的代码地图插件,可以在代码编辑区的右侧生成一个竖向可拖动的代码缩略区,可以快速定位代码的同时,并且提供放大镜功能

右侧代码缩略图效果

放大镜效果

Translation

代码中经常遇到不认识的英文单词或者句子,很蒙蔽怎么办?

Translation是一款非常好用的翻译插件,可以随时随地翻译单词、甚至一段话,从此不再需要额外打开浏览器搜索翻译网站了!

翻译单词

翻译一段话

Rainbow Brackets

在代码非常复杂时,各种俄罗斯套娃式的括号简直让人心碎,Rainbow Brackets则是一款可以对成对括号进行着色的插件,顾名思义“彩虹色的括号”,从此复杂代码一眼即可看穿!

装完插件,括号都被染上了彩虹的颜色:

RestfulToolkit

  • 你知道你项目里到底写了多少个URL接口吗?
  • 如何快速定位某个URL接口对应的Controller代码?
  • 如何快速测试你的Controller接口?

RestfulToolkit则是一个可以解决上述问题的,非常方便的IDEA集成插件,从此Postman怕是要下岗了

GsonFormat

给你一段Json格式数据,除了手写之外,如何快速生成一个和该Json数据对应的Java对象?

比如一段Json格式数据如下:

1
2
3
4
5
{
"status": 0,
"msg": "操作成功",
"data": 1
}

GsonFormat则是一个JSON格式数据 → 对象的快速代码自动生成插件

开始 Alt + Insert 继续看图

JRebel

JRebel是一款JVM插件,它使得Java代码(对*Mapper.xml、*.properties等也支持热部署)修改后不用重启系统,立即生效。

IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费时间浪费生命。目前对于idea热部署最好的解决方案就是安装JRebel插件。

JRebel能做什么

以前Tomcat中解决方案:

修改server.xml的配置:

1
2
><Context path="/helloapp" docBase="helloapp" reloadable="true"/>
>

但改 java代码后果是tomcat会重启整个项目

JRebel是一款热部署插件。当你的Java-Web项目在Tomcat中run/debug的时候,修改某一个java文件时,JRebel就可以解决在项目运行状态run/debug状态下任意修改java文件并动态反馈实时更新到运行的项目中。

JRebel插件获取与安装

  1. 插件安装

    IDEA中 File-Settings-Plugin 中搜索JRebel下载安装后重启IDEA

  2. 激活

相关设置

  • 设置成离线工作模式

    联机工作模式

    离线工作模式

    上边的日期 February 13, 2021 09:39 是离线的有效期,也就是从离线的那一刻起的180天后(激活有效期),你可以在任何时间通过点击 work online选择在线,然后再点击 work offline来离线,以此延长有效期。

设置自动编译

要想实现热部署,首先需要对Intellij按如下进行设置

  1. 由于JRebel是实时监控class文件的变化来实现热部署的,所以在idea环境下需要打开自动变异功能才能实现随时修改,随时生效。
  2. 打开运行时编译
    按快捷键 Ctrl+Shift+Alt+/ ,选择 Registry,设置compiler.automake.allow.when.app.running

JRebel使用

  1. 普通Spring Web应用添加Tomcat等服务器容器配置时,VM option 下方都勾选Update classes and resources,Spring Boot项目忽略此步骤,但IDEA编译器需设置自动编译

  2. 左下角勾选要使用热部署的项目模块

    添加热部署的模块可在 resource 中看到 rebel.xml 配置文件,打开可看到其监听的文件夹,当然可根据自己需求修改

  3. 运行项目时要点击图中红框中的按钮,即可运行

Alibaba Java Coding Guidelines

一款阿里巴巴公司试行的开发设计规范~

Bug的严重程度、优先级如何定义

  • Blocker: 即系统无法执行、崩溃或严重资源不足、应用模块无法启动或异常退出、无法测试、造成系统不稳定。
    严重花屏、内存泄漏、用户数据丢失或破坏、系统崩溃/死机/冻结、模块无法启动或异常退出、严重的数值计算错误、功能设计与需求严重不符、其它导致无法测试的错误, 如服务器500错误
  • Critical:即影响系统功能或操作,主要功能存在严重缺陷,但不会影响到系统稳定性。
    功能未实现、功能错误、系统刷新错误、数据通讯错误、轻微的数值计算错误、影响功能及界面的错误字或拼写错误、安全性问题
  • Major:即界面、性能缺陷、兼容性。
    操作界面错误(包括数据窗口内列名定义、含义是否一致)、边界条件下错误、提示信息错误(包括未给出信息、信息提示错误等)、长时间操作无进度提示、系统未优化(性能问题)、光标跳转设置不好,鼠标(光标)定位错误、兼容性问题
  • Minor/Trivial:即易用性及建议性问题。
    界面格式等不规范、辅助说明描述不清楚、操作时未给用户提示、可输入区域和只读区域没有明显的区分标志、个别不影响产品理解的错别字、文字排列不整齐等一些小问题

犹如神助的功能

阿里规范插件实时检查你书写的代码,并在右侧实时给出警告,警告也是汉字的!!

注:以下处理方式仅限Blocker,其他还需要自己手动修正

  • 快捷键:Ait + Enter 自动补全(注:Windows 快捷键)

  • 扫描结果面板,点击按钮自动补全