Lombok 使用

lombok

课程目标:
  • 什么是lombok
  • lombok的原理
  • lombok的常用注解
  • lombok的安装

引言

  • 还记得刚刚接触java,学习面向对象时因为手写get,set,hashcode,equals等方法的痛苦吗?
  • 还记得后来上手了Eclipse或Idea这样工具可以快速生成get,set等相关方法的兴奋吗? 好强大...
  • 后来工作时间长了,这种兴奋渐渐就变成了的苦恼?
很重要一个原因就是因为随着项目业务模块功能不断扩展,项目中涉及库表越来越多,导致项目中实体类(Entity)对象越来越多,每次写Entity对象最头疼就是生成Get,Set等相关方法,极大影响开发效率,如何更好的解决呢? lombok出现仿佛让我们回到曾经的那种喜悦!!!

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 ....)等一系列方法

lombok第一个环境

1.引入依赖

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

2.使用提供注解

@Data
public class User {
    private String id;
    private String name;
    private Integer age;
    private Date bir;
}
@Data注解: 自动给对象提供 GET SET ToString hashCode equals 等方法

lombok的原理

lombok一组注解

1.@Data注解

    属性
修饰符和类型
属性名
描述
string
staticConstructor
如果你指定一个静态构造函数名,那么生成的构造函数将是私有的,而创建一个静态工厂方法,其他类可以用来创建实例。
  • @Data 用在类上
  • 用来生成对象中GET SET ToString HashCode equals等相关方法
  • 相当于:@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode
  • 为所有字段生成getter,一个有用的toString方法,以及hashCode和equals实现。还将为所有非final字段以及构造函数生成setter
  • staticConstructor: 默认:没有静态构造函数,而是普通的构造函数是公共的。如果你指定一个静态构造函数名,那么生成的构造函数将是私有的,而创建一个静态工厂方法,其他类可以用来创建实例。建议这个名字:“of”,就像这样:public @Data(staticConstructor =“of”)类Point {final int x,y; }.
  • 具体用法
    @Data
    public class User {
       private String id;
       private String name;
       private Integer age;
       private Date bir;
    }

2.@Getter和@Setter

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

3.@ToString

    属性
修饰符和类型
属性名
描述
boolean
callSuper
toString 在输出中包含超类实现的结果
string
exclude
这里列出的任何字段将不会被打印在生成的 toString 实现中
boolean
includeFieldNames
在打印时包括每个字段的名称
string
of
如果存在,明确列出要打印的字段
  • 用在类上
  • 用来生成toString方法
  • callSuper:默认 false
  • exclude: 默认为空
  • includeFieldNames:默认为 true  会打印字段名称
  • of:默认为全部字段,即打印全部字段

4.@AllArgsConstructor 和 @NoArgsConstructor

  • 用在类上
  • 用来生成全部参数构造方法 和 无参数构造方法
  • 具体用法
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
       private String id;
       private String name;
       private Integer age;
       private Date bir;
    }

5.@Accessors

    属性
修饰符和类型
属性名
描述
boolean
fluent
如果为true生成的get/set方法则没有set/get前缀,默认为false
boolean
chain
如果为true生成的set方法返回this,为false生成的set方法是void类型。默认为false,除非当fluent为true时,chain默认则为true
string
prefix
可以指定前缀,生成get/set方法时会去掉指定的前缀
  • 用在类上
  • 用来给类中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());

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";
   }
}
7.@Accessors

idea中如何安装lombok

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

持续更新!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C吴新科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值