原创-lombok

lombok

原创-lombok

1 引言

还记得刚刚接触java,学习面向对象时因为手写get,set,hashcode,equals等方法的痛苦吗?
还记得后来上手了Eclipse|Idea这样工具可以快速生成get,set等相关方法的兴奋吗? 好强大..
后来工作时间长了,这种兴奋渐渐就变成了的苦恼?

很重要一个原因就是因为随着项目业务模块功能不断扩展,项目中涉及库表越来越多,导致项目中实体类(Entity)对象越来越多,每次写Entity对象最头疼就是生成Get,SET等相关方法,极大影响开发效率,如何更好的解决呢? lombok出现仿佛让我们回到曾经的那种喜悦!!!

2 lombok是什么

Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释(注解),用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类 ---百度百科

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more. --摘自官网

通俗解释: lombok快速开发工具,提供了一组java相关注解,通过注解用来更快速生成java对象中我们想要的相关方法(get,set,toString ....)等一系列方法

3 lombok第一个环境

3.1 引入依赖

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.12</version>
  <scope>provided</scope>
</dependency>

3.2 使用提供注解

@Data
public class User {
    private String id;
    private String name;
    private Integer age;
    private Date bir;
}

@Data注解: 自动给对象提供 GET SET ToString hashCode equals 等方法

4 lombok的原理

原创-lombok

5. lombok一组注解

5.1 @Data注解

@Data 用在类上  

用来生成对象中GET SET ToString HashCode equals等相关方法
具体用法
@Data
public class User {
    private String id;
    private String name;
    private Integer age;
    private Date bir;
}

5.2 @Getter and @Setter

用在类上
用来只生成对应GET SET方法
具体用法
  @Getter
  @Setter
  public class User {
      private String id;
      private String name;
      private Integer age;
      private Date bir;
  }

5.3 @ToString

  • 用在类上
  • 用来生成toString方法

5.4 @AllArgsConstructor And @NoArgsConstructor

用在类上

用来生成全部参数构造方法 和 无参数构造方法

具体用法

  @AllArgsConstructor
  @NoArgsConstructor
  public class User {
      private String id;
      private String name;
      private Integer age;
      private Date bir;
  }

5.5 @Accessors

用在类上

用来给类中set方法开启链式调用 chain属性: 用来指定是否开启SET方法链式调用 true 开启 false  不开启

具体用法
@Data
@Accessors(chain = true)
public class User {
    private String id;
    private String name;
    private Integer age;
    private Date bir;
}
  user.setId("21").setName("xiaochen").setAge(23).setBir(new Date());

5.6 @Slf4j

用在类上

用来快速给类中定义一个日志变量

原理

在对应类上加入这个注解相当于在这个类中声明了一个日志对象
 private Logger log = LoggerFactory.getLogger(this.getClass());
具体用法
@Controller
 @RequestMapping("user")
 @Slf4j
 public class UserController {
     @RequestMapping("findAll")
     public String findAll(){
         log.info("进入findAll方法");
         log.info("姓名:[{}],年龄:[{}]",name,age);
         return "index";
     }
 }

6 idea中如何安装lombok

注意:默认在idea中不支持lombok语法,写上之后没有任何效果,需要在idea中额外安装插件才可以继续使用lombok
Preferences | Plugins --> 搜索lombok 下载安装 安装完成重启idea即可

原创-lombok

安装完成之后出现如下问题的解决方案:

原创-lombok

解决方案:

原创-lombok

上一篇:Lombok插件IDEA安装


下一篇:iview组件库表单中upload组件的校验及upload上传文件个数的限制