前書き
Javaプロジェクトには、POJOのgetter / setter / toString、例外処理、I / Oストリームのクローズ操作など、あまりにも多くの不親切なコードがあります。これらのボイラープレートコードには技術的な内容がなく、コードの美しさに影響を与えます。Lombok生まれた。
応用
ステップ1:プラグインをインストールし、IDEAを再起動します
1.进入Settings设置界面,安装Lombok插件(重启IDEA)
2.Settings设置界面,开启 AnnocationProcessors(让Lombok注解在编译阶段起到作用)
ステップ2:Jarパッケージを参照する
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>//只在编译阶段生效,不需要打入包中
</dependency>
原理
Java 6はjavacが「JSR 269 Pluggable Annotation Processing API」仕様をサポートしているため、プログラムがAPIを実装している限り、javacの実行中に呼び出すことができます。
ロンボクは「JSR 269 API」を実装したプログラムです。
処理する
1. javac对源代码进行分析,生成一棵抽象语法树(AST)
2. javac编译过程中调用实现了JSR 269的Lombok程序
3. 此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树(AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点
4. javac使用修改后的抽象语法树(AST)生成字节码文件
一般的なメモ
@Data
所有属性的get和set方法
toString 方法
hashCode方法
equals方法
@Getter
@Setter
作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法,可以设定访问权限及是否懒加载等。
@EqualsAndHashCode:作用于类覆盖默认的equals和hashCode方法
@NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。
@NoArgsConstructor:生成无参构造器
@AllArgsConstructor:生成全参构造器
@RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器;
@ToString(of={"name","phone"},exclude={"age"})
作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
@Builder:作用于类上,将类转变为建造者模式
@Log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解
場合
@Data
@NoArgsConstructor(staticName = "of",access = AccessLevel.PRIVATE)
@AllArgsConstructor
@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
@Setter(value = AccessLevel.PUBLIC)
@Getter(value = AccessLevel.PUBLIC)
public class User {
@NonNull
private Long id;//用户表
private Long roleId;//角色id
private String userName;//账号
private String passWord;//密码
}
質問や意見がありましたら、メッセージを残して一緒に交換してください。ブロガーは、それを見るとすぐに返信します...