@Data 注解的主要作用是提高代码的简洁,使用这个注解可以省去代码中大量的get()、 set()、 toString()等方法

mvn依赖

1
2
3
4
5
6
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>

java代码使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import lombok.Data;

/**
* @author wh445306
* @version 1.0
* @Desciption:User lombok插件的作用与用法
* @date 2021-01-07 22:57
*/

@Data
public class User {
private String username;
private String password;
private String type;
}

常用的几个注解:
@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor : 注在类上,提供类的全参构造
@NoArgsConstructor : 注在类上,提供类的无参构造
@Setter : 注在属性上,提供 set 方法
@Getter : 注在属性上,提供 get 方法
@EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j : 注在类上,提供对应的 Logger 对象,变量名为 log

像 lombok 这种插件,已经不仅仅是插件了,它在编译器编译时通过操作AST(抽象语法树)改变字节码生成,变相的说它就是在改变java语法,它改变了你编写源码的方式,它不像 spring 的依赖注入一样是运行时的特性,而是编译时的特性。如果一个项目有非常多这样的插件,会极大的降低阅读源代码的舒适度。

lombok 只是省去了一些人工生成代码的麻烦,但是这些getter/setter等等的方法,用IDE的快捷键也可很方便的生成。况且,有时通过给getter/setter加一点点业务代码(但通常不建议这么加),能极大的简化某些业务场景的代码。

用还是不用,这中间如何取舍,自然是要看项目的需要,灵活运用。

————————————————
原文链接:https://blog.csdn.net/wh445306/article/details/112341979