Java使用lombok简化bean的开发

Posted lypzz.com

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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会循环引用,导致栈溢出。这时,需要手动实现相关方法。

以上是关于Java使用lombok简化bean的开发的主要内容,如果未能解决你的问题,请参考以下文章

eclipse 使用lombok 精简java bean

lombok 简化 Java 代码

Java简化代码神器-Lombok

idea 安装lombok 插件过程

Lombok简化Java代码

Java开发速度神器Lombok,Eclipse端安装使用教程