Java使用lombok简化bean的开发

安装lombok

引入jar包

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

在idea中安装lombok插件。

使用lombok

lombok会根据所添加的注解,在编译期自动生成Bean类的通用代码(构造器,Getter,Setter等)

@Getter@Setter

生成Getter与Setter方法

@ToString

自动重写toString()方法

@EqualsAndHashCode

自动重写equals()与hashCode()方法

@NonNull

被注解的字段不能为null

@RequiredArgsConstructor

自动生成需要的构造器:默认生成无参构造器;如果有字段被 @NonNull 注解,则生成非空字段构造器

例如

@RequiredArgsConstructor
public class User
{
    @NonNull
    private String username;
    @NonNull
    private String password;
    private int age;
}

将生成以下构造器

public User(@NonNull String username,@NonNull String password)
{
    this.username = username;
    this.password = password;
}

@NoArgsConstructor

自动生成无参构造器

@AllArgsConstructor

自动生成全参构造器

@Data

最方便的注解,等价与同时使用了 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCod 这些注解

@Cleanup

自动关闭资源

public void f()
{
    try
    {
        @Cleanup
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        baos.write(new byte[]{'Y','e','s'});
        System.out.println(baos.toString());
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}

等价于

public void f()
{
    try
    {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try
        {
            baos.write(new byte[]{'Y','e','s'});
            System.out.println(baos.toString());
        }
        finally
        {
            baos.close();
        }
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}

@Synchronized

自动将方法中的代码转换为同步代码块

@Synchronized
public void f()
{
    // TODO
}

等价于

private final java.lang.Object $lock = new java.lang.Object[0];

public void f()
{
    synchronized($lock)
    {
        // TODO
    }
}

@SneakyThrows

用来注解构造器和方法,可以不用手动声明方法声明上的throws语句

@SneakyThrows
public void f()
{
    throw new IllegalAccessException();
}

@Slf4j

会自动创建一个叫log的Logger对象,等价于以下代码

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

使用lombok注意事项

如果多个Bean类互相依赖,使用Lombok会循环引用,导致栈溢出。这时,需要手动实现相关方法。

上一篇:windows延时自启动脚本


下一篇:去掉DELPHI开启后弹出安全警告框