@Data注解引出lombok包

最近翻看一个新的项目,发现一个有趣的一点,就是这个项目的javabean并没有写对应属性的get、set、equals、toStirg等方法,却可以为属性赋值。
仔细看发现有一个@Data注解。感觉有点意思就研究一下。这个注解是属于Lombok包的。

Lombok优点:
Lombok可以最大限度的简化我们的代码。比如开发中使用的javabean。普通情况下我们要添加他的get、set方法,遇到一个实体类有三四十个属性时整个类会显得很长。并且也需要花时间去添加这些get、set方法,特殊情况下也需要去重写他的构造器和equals等方法。
此时lombok的优点就出来了,Lombok是通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。
在.java文件中并没有显示来这些方法,不过编译后的.class文件中有这些方法。这样代码比较简洁,开发效率也提高了。

Lombok的使用需要引入jar包,maven项目中可以直接添加依赖(版本看情况自定):

  <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId> 
       <version>$version</version>
  </dependency>

常用注解:

@Setter :此注解会生成除final属性外的其他属性的对应的setter方法;
@Getter: 此注解会生成除final属性外的其他属性的对应的getter方法;
@ToString:此注解会自动重写对应的toStirng方法;
@NoArgsConstructor:此注解会生成对应的无参构造方法;
@RequiredArgsConstructor将标记为@NoNull的属性生成一个构造器
@HashCode:
@Equals:
@CanEqual:
@Data:比较暴力,它包含很多注解,即当使用当前注解时,会自动生成包含的各种方法(@Setter+@Getter+@ToString+@EqualsAndHashCode);
@AllArgsConstructor:此注解会生成全部属性对应的的有参构造方法(不包含final属性);
@Log(这是一个泛型注解,具体有很多种形式)
@EqualsAndHashCode:在JavaBean或类JavaBean中使用,使用此注解会自动重写对应的equals方法和hashCode方法;
@Log4j:在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可,不需要再写private final static Logger logger = LoggerFactory.getLogger(XXXXXXXXX.class);

在使用以上注解需要处理参数时,处理方法如下(以@ToString注解为例,其他注解同@ToString注解):
@ToString(exclude="column","..",..)
意义:排除对应列所对应的属性,生成toString时不包含column,..等多个参数;
@ToString(of="column","..",..)
意义:只生成包含对应列所对应属性的参数的toString方法;

posted @ 2020-08-26 15:16  小小短腿儿  阅读(1077)  评论(0编辑  收藏  举报