Lombok使用

作用

减少重复的代码书写, 增加代码的可读性, 降低信噪比.

导入

maven:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

gradle:

// https://mvnrepository.com/artifact/org.projectlombok/lombok
providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.12'

配置

只要导入即可使用, 但是IDE中需要下载相应的插件, 否则会报错(但是能够编译通过).

使用

使用方式为注解方式

@Data

该注解会写下getter, setter, 和toString方法.
该注解有一个参数staticConstructor, 可以指定生成相应的静态工厂方法(该参数不能和@AllArgsConstructor与@NoArgsConstructor同时使用).

样例:

@Data(staticConstructor = "of")
public class User {
    private Long id;
    private String userName;
    private String password;
}

相当于:

public class User {
    private  Long id;
    private String userName;
    private String password;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    
    public static User of() {
        return new User();
    }
}

@Getter

该注解会加入getter方法.
设置在类名上则给所有的字段都加上getter方法, 设置在字段上则只给该字段加入getter方法.

@setter

该注解会加入setter方法, 使用方法和@Getter大致相同.

@AllArgsConstructor

该注解会自动生成一个带参数的构造方法.

@NoArgsConstructor

该注解会自动生成一个无参构造方法.

@RequiredArgsConstructor

该注解会生成一个构造方法, 其只包含标有@NonNul等约束的注解和final的字段.

@EqualsAndHashCode

该注解会自动生成equals和HashCode方法.

@EqualsAndHashCode.Exclude

该注解标记在字段上, 这样生成equals()hashCode()方法时会忽略这些字段.

@EqualsAndHashCode.Include

该注解需要在@EqualsAndHashCode中加上onlyExplicitlyIncluded = true才能使用, 未加上该注解的字段会被忽略.

@Value

该注解相当于@ToString + @EqualsAndHashCode + @AllArgsConstructor + @Getter

@Log

该注解相当于在类中加入了:

Logger log =  LoggerFactory.getLogger(User.class);

也可以使用一下几种具体的log:
@Slf4j, @Log4j, @Log4j2, @XSlf4j, @CommonsLog, @Flogger, @JBossLog

@FieldDefaults

设置属性的使用范围
若设置makeFinal = true, 则字段均被final修饰.
level为设置字段的使用范围, 比如@FieldDefaults(level = AccessLevel.PRIVATE)为设置所有字段为private(字段应该为缺省状态, 否则以自己加入的修饰符为主).

@Builder

该注解会给类加上构建者方法, 加入后我们可以使用下面类似的方法:

User user = User.builder()
        .id(1L)
        .userName("boba")
        .password("123456").build();

@Synchronized

该注解用在方法上, 对于类方法, 它会给类生成private final Object readLock = new Object();, 并在该方法上给readLock上锁, 对于静态方法, 它会给类生成private static final Object $LOCK = new Object[0];, 在该方法上给$LOCK上锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值