摘要:创建对象工具类设置父类设置属性的使用范围,如等,也可以设置属性是否被修饰。所以显示的是按钮重启。即使没有重写方法,依然可以调用,而且结果和重写了方法一样。最后奉上项目完整代码后语以上就是我对插件的理解与使用,希望对你们有帮助。
微信公众号:一个优秀的废人前言
如有问题或建议,请后台留言,我会尽力解决你的问题。
上周去了开年会,去的地方是温泉度假村。老实说,我是无感的,90% 是因为没中奖(老板太抠,两百人只抽三个奖),10 % 是因为从小泡温泉长大没啥感觉。
LomBok 是什么?LomBok 是一个插件,它能通过注解帮我们消除那些必须要写但是重复的代码,比如setter,getter,构造函数之类的方法。
试想一个场景,在项目开发中,我们往往需要定义大量的数据库实体或者某些工具 Bean ,每一个 Bean 都需要我们编写 getter 、setter 方法、构造方法以及 toString 等方法。这是一个非常繁琐的过程。程序员准则,做三遍以上的重复事情就必须想办法让它自动化了。所以今天给你们介绍一个牛逼的插件「LomBok」。
LomBok 常用注解简介@Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法 @Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法 @Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法 @NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常 @Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定 @Log作用于类,创建一个log属性 @Builder:使用builder模式创建对象 @NoArgsConstructor:创建一个无参构造函数 @AllArgsConstructor:创建一个全参构造函数 @ToStirng:创建一个toString方法 @Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。 @RequiredArgsConstructor:创建对象 @UtilityClass:工具类 @ExtensionMethod:设置父类 @FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。 @Cleanup: 关闭流、连接点。 @EqualsAndHashCode:重写equals和hashcode方法。 @toString:创建toString方法。如何安装?
1、直接从 http://plugins.jetbrains.com/ 下载,然后放到IDEA 安装文件下面的 plugins,然后重启 IDEA。
2、在 IDEA 的 settings(windows)或者Preferences(mac),下找到 plugins 菜单,点击 Browse repositories,如下图
第二步搜索 LomBok 点击 Install (我这里已经安装了,但是有更新。所以显示的是 Update 按钮)重启 IDEA 。
代码演示新建 SpringBoot 项目,不会构建的看这篇文章 使用 IDEA 构建 Spring Boot 工程 ,构建时勾选 web 依赖和 Lombok 依赖,完整 pom 如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.2.RELEASE com.nasus lombok 0.0.1-SNAPSHOT lombok lombok_demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
新建一个 Student 类,这是使用 lombok 的类,代码如下:
package com.nasus.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * Project Name:springboot_lomnok_demo
* Package Name:com.nasus.entity
* Date:2019/1/23 0023 14:32
* Description: TODO: 描述该类的作用
* * @author chenzy
* Copyright Notice ========================================================= * This file contains proprietary information of Eastcom Technologies Co. Ltd. * Copying or reproduction without prior written approval is prohibited. * Copyright (c) 2019 ======================================================= */ @Data //自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法 @AllArgsConstructor //自动生成构造方法 @NoArgsConstructor //自动生成构造方法 public class Student { private String id; private String name; private int age; }
新建一个 StudentNoLombok 类,这是没有使用 lombok 的类(此类在项目中无用处,只为与使用 Lombok 的类对比,突出使用 LomBok 类代码的简洁),代码如下:
package com.nasus.entity; import java.util.Objects; /** * Project Name:springboot_lomnok_demo
* Package Name:com.nasus.entity
* Date:2019/1/23 0023 14:34
* Description: TODO: 描述该类的作用
* * @author chenzy
* Copyright Notice ========================================================= * This file contains proprietary information of Eastcom Technologies Co. Ltd. * Copying or reproduction without prior written approval is prohibited. * Copyright (c) 2019 ======================================================= */ public class StudentNoLombok { private String id; private String name; private int age; public StudentNoLombok() { } public StudentNoLombok(String id, String name, int age) { this.id = id; this.name = name; this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof StudentNoLombok)) { return false; } StudentNoLombok that = (StudentNoLombok) o; return age == that.age && Objects.equals(id, that.id) && Objects.equals(name, that.name); } @Override public int hashCode() { return Objects.hash(id, name, age); } @Override public String toString() { return "StudentNoLombok{" + "id="" + id + """ + ", name="" + name + """ + ", age=" + age + "}"; } }
从上面两个类对比可以看出,使用 LomBok 插件的类比不使用简洁美观得多。
新建 StudentController 类,代码如下:
package com.nasus.controller; import com.nasus.entity.Student; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * Project Name:springboot_lomnok_demo
* Package Name:com.nasus.controller
* Date:2019/1/23 0023 14:37
* Description: TODO: 描述该类的作用
* * @author chenzy
* Copyright Notice ========================================================= * This file contains proprietary information of Eastcom Technologies Co. Ltd. * Copying or reproduction without prior written approval is prohibited. * Copyright (c) 2019 ======================================================= */ @RestController @RequestMapping("/student") public class StudentController { @GetMapping("/testLombok") public Student getStudent(){ Student student = new Student(); student.setId("6666666666"); student.setAge(24); student.setName("陈志远"); System.out.println(student.toString()); return student; } }
启动项目,访问地址 http://localhost:8080/student/testLombok 浏览器输出如下:
控制台输出如下:
由上面两个输出结果可以看出,LomBok 插件起作用了。即使 Student 没有重写 toString 方法,依然可以调用,而且结果和重写了 toString 方法一样。
当项目很庞大的时候,往往基础的 Bean 也非常多。建议看到这篇文章的你可以在项目中把 LomBok 用起来。
最后奉上 项目完整代码
后语以上就是我对 LomBok 插件的理解与使用,希望对你们有帮助。最后,对 Python 、Java 感兴趣请长按二维码关注一波,我会努力带给你们价值,如果觉得本文对你哪怕有一丁点帮助,请帮忙点好看,让更多人知道。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73207.html
摘要:概述通过提供简单的语法注解形式来帮助简化消除一些必须有但显得很臃肿的代码。作用在方法参数上的注解,用于自动生成空值参数检查自动帮我们调用方法。 showImg(https://segmentfault.com/img/remote/1460000014247343); 概述 Lombok 通过提供简单的语法注解形式来帮助简化消除一些必须有但显得很臃肿的 java 代码。典型的是对于 ...
摘要:前言如题,今天介绍的声明式事务。提供一个注解在配置类上来开启声明式事务的支持。而在配置里还开启了对声明式事务的支持,代码如下所以在中,无须显式开启使用注解。源码下载后语以上为声明式事务的教程。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 如题,今天介绍 SpringBoot 的 声明式事务。 Spring 的事务机制 所有的数据访问技术都有事务处...
摘要:提供映射标签,支持对象与数据库的字段关系映射提供对象关系映射标签,支持对象关系组建维护提供标签,支持编写动态。层实现类添加更新删除根据查询查询所有的层构建测试结果其他接口已通过测试,无问题。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,本文通过注解的形式...
阅读 3279·2021-11-23 09:51
阅读 941·2021-09-03 10:30
阅读 3213·2021-08-31 09:40
阅读 3280·2019-08-30 14:22
阅读 904·2019-08-30 14:09
阅读 2900·2019-08-30 13:21
阅读 3236·2019-08-28 18:03
阅读 2861·2019-08-26 13:44