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 条评论
登录 后参与评论

相关文章

来自专栏Danny的专栏

【MyBatis框架点滴】——MyBatis输入映射

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

571
来自专栏高性能服务器开发

(三)dict哈希结构3

/* This function performs just a step of rehashing, and only if there are * no...

2628
来自专栏Java Edge

SpringMVC数据绑定定义支持的数据绑定方式

定义 百度百科定义: 简单绑定是将一个用户界面元素(控件)的属性绑定到一个类型(对象)实例上的某个属性的方法。 例如,如果一个开发者有一个Customer类...

3706
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

18310
来自专栏Linyb极客之路

简洁又快速地处理集合——Java8 Stream(下)

而 parallelStream() 是并行流方法,能够让数据集执行并行操作,后面会更详细地讲解

1.1K3
来自专栏Android知识点总结

01--图解数据结构之数组实现集合

1084
来自专栏跟着阿笨一起玩NET

JSON入门

JSON:JavaScript Object Notation 【JavaScript 对象表示法】

503
来自专栏有趣的Python

数据机构探险之图(下)篇:代码实战数据机构探险之图篇(代码编写)

数据机构探险之图篇(代码编写) 图的存储(邻接矩阵) & 图的深度优先 & 广度优先 图的编码实战-最小生成树(普里姆算法) 图的编码实战-最小生成树之克鲁斯卡...

3585
来自专栏IMWeb前端团队

JSON Schema 介绍及应用

本文作者:IMWeb jerytang 原文出处:IMWeb社区 未经同意,禁止转载 ? 一、如何描述 JSON ? JSON (JavaScript...

26410
来自专栏积累沉淀

初识HtmlParser

1、概念 网页解析,即程序自动分析网页内容、获取信息,从而进一步处理信息。 htmlparser包提供方便、简洁的处理html文件的方法,它将html页面中...

1945

扫码关注云+社区