lombok插件

IDE:

IntelliJ IDEA 

首先在设置的插件栏中安装lombok,然后使用如下的pom依赖:

<dependency>
   <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

注解介绍:

  • @toString
生成toString()方法,默认情况下,它会按顺序(以逗号分隔)打印你的类名称以及每个字段。
可以这样设置不包含哪些字段@ToString(exclude = "id") / @ToString(exclude = {"id","name"})
如果继承的有父类的话,可以设置callSuper 让其调用父类的toString()方法,例如:@ToString(callSuper = true)
import lombok.ToString;
@ToString(exclude = {"id","name"})
public class User {
     private Integer id;
     private String name;
     private String phone;
}
//生成toString方法如下:
public String toString(){
     return "User(phone=" + phone + ")";
}
  • @Getter and @Setter
你可以用@Getter / @Setter注释任何字段,让lombok自动生成默认的getter / setter方法。
默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
public class User {
     @Getter(AccessLevel.PROTECTED) @Setter private Integer id;
     @Getter @Setter private String name;
     @Getter @Setter private String phone;
}
  • @EqualsAndHashCode
生成hashCode()和equals()方法,默认情况下,它将使用所有非静态,非transient字段。但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。
  • @RequiredArgsConstructor
@RequiredArgsConstructor会生成构造方法(可能带参数也可能不带参数),
如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段
@RequiredArgsConstructor(staticName = "of")会生成一个of()的静态方法,并把构造方法设置为私有的
  • @Data
@Data 包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能

以后有更多的使用到的会再做补充

  • @builder

该注解可以将我们的一个bean类包装成一个构建者模式,编译时增加了一个Builder内部类和全字段的构造器。

package com.pollyduan;

import java.util.Date;

import lombok.Builder;
import lombok.Data;

@Builder
public class User {
    private Integer id;
    private String userName;
    private String password;
    private String email;
    private Integer age;
    private Date signupTime;

    public static void main(String[] args) {
        /*
         * User user=new User();//The constructor User() is undefined
         */
        User user = new User(1001, "pollyduan", "123456", "pollyduan@pollyduan.com", 30, new Date());
        //或者
        user=User.builder()
                .age(30)
                .userName("pollyduan")
                .build();
        System.out.println(user);
    }
}

一般情况下我们使用log4j或者slf4j定义一个log会这样写:private static final Logger log = Logger.getLogger(getClass());

但是在class上引入注解@Slf4j即可直接使用.

@Slf4j  
public class SectionVO {  
    public SectionVO() {  
        log.info("I'm sectionVO : {}", toString());  
    }  
}  

反编译SectionVO.class发现自动生成了

private static final Logger log = LoggerFactory.getLogger(SectionVO.class);  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 应用层-day02

    web与HTTP web的应用层协议时超文本传输协议(HyperText Transfer Protocol HTTP) HTTP是由两个程序实现的:一个客户端...

    用户1134788
  • 深入理解java虚拟机-第二章:java内存区域与内存泄露异常

    java将内存的管理(主要是回收工作),交由jvm管理,确实很省事,但是一点jvm因内存出现问题,排查起来将会很困难,为了能够成为独当一面的大牛呢,自然要了解...

    用户1134788
  • 关于打包后提示无法连接到mongodb的情况

    昨天晚上要和前端联调。 打完jar包后发现无法连接到测试环境的数据库。 就很尴尬,最后发现问题在于mongodb的URI写错了: 正确的URI格式:mongod...

    用户1134788
  • 《深入理解计算机系统》阅读笔记--程序的机器级表示(上)

    编译器基于编程语言的规则,目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。GCC c语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的...

    coders
  • [PHP] 实现路由映射到指定控制器

    陶士涵
  • 源码 : 设计模式之单例模式的5种实现

    七七分享
  • Leetcode 算法 -3. Longest Substring Without Repeating Characters

    我们以ababcbb为例说明, 这里hash表的值-1是初始值, 这样在方便做+1操作. index 作为开始索引值, 起初index为0, 这是理所当然的。当...

    用户1416054
  • MMORPG游戏开发实战(一)

    雷潮
  • 函数响应式编程及ReactiveObjC学习笔记 (三)

    今天先不去分析它的核心代码, 我们先看看ReactiveObjC库里面一些特别的东西, 如果大家点开ReactiveObjC目录应该会看到很多category...

    周希
  • LeetCode - 007

    https://leetcode.com/problems/reverse-integer/

    咸鱼学Python

扫码关注云+社区

领取腾讯云代金券