欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ideal中使用lombok简化代码

程序员文章站 2024-03-20 15:16:28
...

 

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。

我们平时在学实体类时,都需要自动导入get,set,toString方法.如果某个属性的类型错了,我们还需要 删除get,set方法,重新导入 。这些丢失繁琐多余的事情,而且如果一个类的属性特别多时,代码看起来特别复杂。使用lombok工具只需要添加一两个注解就可以,不需要导入get,set方法。

IntelliJ IDEA 使用它的方法

  • 先安装插件

 

ideal中使用lombok简化代码

Paste_Image.png

  • 然后引入lombok的jar包
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.14</version>
</dependency>

在我们写实体类的时候加上注解@Data或者@Getter或者@Setter注解即可。

lombok 常用注解介绍

  1. @NonNull

    使用 @NonNull 注解修饰的字段 通过 set 方法设置时如果为 null, 将抛出 NullPointerException

  2. @Cleanup

    主要用来修饰 IO 流相关类, 会在 finally 代码块中对该资源进行 close();

  3. @Getter,@Setter

    为字段生成 getter,setter 方法, 标记到类上表明为所有字段生成

  4. @ToString

    生成 toString 方法, 默认打印所有非静态字段

  5. @EqualsAndHashCode

    生成 equals 和 hashCode 方法

  6. @NoArgsConstructor,@RequiredArgsConstructor,@AllArgsConstructor

    NoArgsConstructor 无参构造函数
    RequiredArgsConstructor 为未初始化的 final 字段和使用 @NonNull 标注的字段生成构造函数
    AllArgsConstructor 为所有字段生成构造函数
    7. @Data
    > 相当于同时使用 @Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstructor
    8. @Value
    > 使用后, 类将使用 final 进行修饰, 同时使用 @ToString,@EqualsAndHashCode,@AllArgsConstructor,@Getter

  7. @Builder

    创建一个静态内部类, 使用该类可以使用链式调用创建对象
    如 User 对象中存在 name,age 字段, User user=User.builder().name("姓名").age(20).build()
    10. @SneakyThrows
    > 对标注的方法进行 try catch 后抛出异常, 可在 value 输入需要 catch 的异常数组, 默认 catch Throwable

  8. @Synchronized

    在标注的方法内 使用 synchronized($lock) {} 对代码进行包裹 ,$lock 为 new Object[0]
    12. @Log,@CommonsLog,@JBossLog,@Log,@Log4j,@Log4j2,@Slf4j,@XSlf4j
    > 生成一个当前类的日志对象, 可以使用 topic 指定要获取的日志名称

在项目中我一般直接用@Data注解。例如:

@Entity
@Table(name = "tb_user")
@Data
public class User extends BaseEntity {

   private static final long serialVersionUID = 1L;

   /**
    * 用户id
    */
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "id", nullable = false)
   private Integer id;

   /**
    * 账户名
    */
   private String userName;

   /**
    * 昵称
    */
   private String nickName;

   /**
    * 用户密码
    */
   private String password; 
}