idea插件2

1、Background Image Plus

默认IDEA的背景一般都比较单调,要么白乎乎,要么褐乎乎,而Background Image Plus这个插件可以为IDEA设置自定义图片作为背景,而且还可以设置透明度,从此写代码乐趣十足!

背景图设置效果如下:


2、CodeGlance

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

右侧代码缩略图效果:

放大镜效果:


3、Translation

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

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

翻译逐个单词:

翻译一段话:


4、Rainbow Brackets

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

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


5、Grep Console

默认情况下,IDEA控制台窗口在打印日志时都是一种颜色到底,比如各种info,warn,和error等类型的日志信息交织在一起,不好分辨。

Grep Console插件则可以帮助我们自定义设置不用日志用不同的颜色进行标识,非常方便观看!

设置自定义颜色:

着色后的日志打印效果:


6、Statistic

程序员天天闷头做项目、写代码!

  • 你知道你项目到底有多少行代码吗?

  • 你知道项目代码里有多少是实际代码?

  • 有多少是空行?

  • 有多少是注释吗?

  • . . .

Statistic则是一款可以做项目全局代码统计信息的小插件:


7、Markdown Navigator

很多人私信问说,你是用什么markdown编辑器写博客的呢?不瞒你说,用IDEA就可以很愉快的写博客了,装了一个Markdown Navigator插件即可方便的实现:


8、RestfulToolkit

  • 你知道你项目里到底写了多少个URL接口吗?

  • 如何快速定位某个URL接口对应的Controller代码?

  • 如何快速测试你的Controller接口?

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


9、GsonFormat

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

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

{
    "status": 0,
    "msg": "操作成功",
    "data": 1
}

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


10、MyBatis Log Plugin   要钱

Mybatisxml文件中的SQL语句都是拼装起来的,但有时候(比如在调试的时候)想把某个请求对应的后台具体SQL查询语句单独拿出来测试或验证,该怎么办呢?

MyBatis Log Plugin这个插件既可以帮你完美地解决这个问题:


11、Free Mybatis plugin

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

Free Mybatis plugin插件此时就可以大显身手了:


Lombok

Lombok是一个很牛批的插件(本质是个Java库),项目里一旦引入了Lombok神器之后,你项目中所有诸如:对象的构造函数、 equals()方法,属性的 get()/set()方法等等,这些没有技术含量的代码统统都不用写了,Lombok帮你搞定一切,全部帮你自动生成!

 项目中引入Lombok 

首先在项目的 pom.xml中引入 Lombok依赖:


org.projectlombok
lombok
除此之外,还要在IDE中安装Lombok插件,并配置:

idea插件2_第1张图片

接下来进行代码实验。


 get/set不用写了 

两个注解:@Getter@Setter即可方便搞定。


 new对象变得优雅了 

只需要在 Course类上用上 @Builder注解:

@Builder
public class Course{
private Long id;
// 课程ID
private String name;
// 课程名称
private Integer score;// 课程成绩
}

Course类对象的创建即可使用 链式表达 的方式一行代码完成:

  1. // 对象可以链式构造,一句话完成 !

  2. Course course = Course.builder().id(123l).name("高等数学").score(100).build();

看到这里,如果你学过设计模式中的 “建造者模式” 的话,一定能猜到 @Builder注解就是一个典型的“建造者模式”的实现案例!

建造者模式的链式调用用起来实在是很爽!


构造函数不用写了 

一、全参构造器不用写了

当你在你的类上使用了Lombok的注解 AllArgsConstructor时:

 
  1. @AllArgsConstructor

  2. public class Course {

  3. private Long id; // 课程ID

  4. private String name; // 课程名称

  5. private Integer score; // 课程成绩

  6. }

这时候你的类在编译后会自动生成一个无参构造函数,就像这样:

 
  1. public class Course {

  2.  

  3. private Long id; // 课程ID

  4.  

  5. private String name; // 课程名称

  6.  

  7. private Integer score; // 课程成绩

  8.  

  9. // Lombok自动会帮你生成一个全参构造器!!

  10. public Course( Long id, String name, Integer score ) {

  11. this.id = id;

  12. this.name = name;

  13. this.score = score;

  14. }

  15. }

二、无参数构造器也不用写了

当你在你的类上使用了Lombok的注解 NoArgsConstructor时:

  1. @NoArgsConstructor

  2. public class Course {

  3. private Long id; // 课程ID

  4. private String name; // 课程名称

  5. private Integer score; // 课程成绩

  6. }

这时候你的类在编译后会自动生成一个无参构造函数,就像这样:

  1. public class Course {

  2. private Long id; // 课程ID

  3. private String name; // 课程名称

  4. private Integer score; // 课程成绩

  5. // Lombok自动会帮你生成一个无参构造器!!

  6. public Course() {

  7. }

  8.  

  9. }

三、部分参数构造器也不用写了

当你在你的类上使用了Lombok的注解 RequiredArgsConstructor时:

  1. @RequiredArgsConstructor

  2. public class Course {

  3. private Long id; // 课程ID

  4. private final String name; // 课程名称

  5. private Integer score; // 课程成绩

  6.  

  7. }

这时候你的类在编译后会自动生成一个具备部分参数的构造函数,就像这样:

  1. public class Course {

  2. private Long id; // 课程ID

  3. private final String name; // 课程名称

  4. private Integer score; // 课程成绩

  5. // 因为name字段定义成final,所以Lombok自动会帮你生成一个部分参数的构造器!!

  6. public Course(String name) {

  7. this.name = name;

  8. }

  9. }

因为 name字段定义成 final,所以 Lombok自动会帮你生成一个部分参数的构造器!!


 爽!null判空不用写了 

Lombok的 @NonNull注解可以自动帮我们避免空指针判断。该注解作用在方法参数上,用于自动生成空值参数检查,比如:

  1. public static void output( String input ) {

  2. // 作为一个严谨且良心的Java开发工程师

  3. // 一般我们要手动对入参进行校验,就像下面这样 !

  4. if( input == null ) {

  5. System.out.println("该函数输入参数为空");

  6. }

  7. System.out.println( input );

  8. }

但是有了Lombok之后,事情就变得简单了,一个注解搞定:

  1. public static void output( @NonNull String input ) {

  2. // 原先这里对 input 的判空不用手动做了

  3. System.out.println( input );

  4. }


 爽!屁股不用擦了 

什么意思呢?

假如我们要读取一个 txt文本文件,一般会这样写代码:

 
  1. BufferedReader br = null;

  2. try {

  3. FileReader fileReader = new FileReader("呵呵.tet"); // 定义文件

  4. br = new BufferedReader( fileReader ); // 读取文件

  5. System.out.println( br.readLine() ); // 读取文件一行内容

  6. } catch (Exception e) {

  7. e.printStackTrace();

  8. } finally {

  9. try {

  10. br.close(); // 无论如何文件句柄在使用结束后得手动关闭!!

  11. } catch (IOException e) {

  12. e.printStackTrace();

  13. }

  14. }

注意,这个文件句柄在使用完成之后是一定要手动 close的,否则就有可能资源泄漏

有了Lombok之后,这种擦屁股活儿统统不用干了,一个 @Cleanup注解即可搞定

 
  1. @Cleanup BufferedReader br = null; // 一个 @Cleanup注解搞定!

  2. try {

  3. FileReader fileReader = new FileReader("呵呵.tet");

  4. br = new BufferedReader( fileReader );

  5. System.out.println( br.readLine() );

  6. } catch (Exception e) {

  7. e.printStackTrace();

  8. }


 爽!异常不用捕捉了 

比如我们打开一个 txt文本文件:

 
  1. public void openTxt( String filename ) {

  2. try {

  3. FileReader fileReader = new FileReader( filename );

  4. } catch (FileNotFoundException e) {

  5. e.printStackTrace();

  6. }

  7. }

这地方的 FileNotFoundException异常,要么显式地在函数级抛出,要么就像上面一样 try/catch内部消灭。

如果在编码时,不想处理这种繁杂的异常处理,你可以使用Lombok的 @SneakyThrows注解进行简化,比如上面的代码就可以简化为:

 
  1. @SneakyThrows

  2. public void openTxt( String filename ) {

  3. FileReader fileReader = new FileReader( filename );

  4. }

这样你编码时就无需处理异常了。

必须友情提示的是:这样写你是爽了,但你很有可能会被队友一顿暴打,因为别人调用你编写的函数,并不能显式的获知需要处理哪些异常,这样容易留坑!


 还有很多 ... 

好了,受限于篇幅限制,抛砖引玉就到这里了。

上面列举了几个平时项目开发中使用非常频繁的Lombok注解,除此之外,还有诸如像:

  • @ToString:为类自动生成toString()方法

  • @EqualsAndHashCode:为类自动生成hashCode和equals实现

  • @Log:为类自动生成log日志记录

  • @Synchronized:为类方法或实例方法自动生成synchronized保护

等工具也是非常好用的,大家可以尝试在项目里用起来。

 

 

 

 

 

你可能感兴趣的:(IDEA实践)