[Java]Lombok宣言
@ToString toString()メソッドを自動的に生成します. excludeで除外するフィールドを指定できます. callSuper値をtrueに設定すると、継承されたクラスの情報が出力されます.(Default = false) ToStringは、トークン値、パスワードなどの機密情報を排除することができる. @Builderビルダーの自動作成
複数のフィールドを持つ複雑なクラスでは、コンストラクタではなくコンストラクタを使用する場合にのみ使用します.コンストラクタモードを直接記述すると,符号化量が予想外に高い.パラメータのないデフォルトジェネレータを生成します. アクセス・レベルでアクセス制限を指定できます.
推奨使用方法 @NoArgConstructor(access=accessLevel.PROTED)を使用して、オブジェクトの作成時のセキュリティを確保することを推奨します. のデフォルトジェネレータをpublic(default)に開くと、セキュリティが大幅に低下します. @RequiredArgsConstructor(無効化を推奨)
パラメータとして finalまたは@NonNull変数のみを受け入れるジェネレータを生成します. アクセス・レベルでアクセス制限を指定できます.
Use
のすべての変数をパラメータの生成器として生成します. アクセス・レベルでアクセス制限を指定できます. 推奨される使用法しかし、開発者が突然変数の位置を変更すると、ジェネレータの位置も変更されますが、入力の両方がStringなのでエラーは発生しません.開発者がそれを認識しなければ、致命的なエラーが発生します. したがって、Annotationは使用しないことをお勧めします.推奨される使用法はこのようにして直接生成したジェネレータに@Builder Annotationを使用し,以下に示すように開発者のエラーを最大限に防止する. builderは順番ではなく名前で入力されているからです. @Data(無効化推奨)@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgConstructorを含むAnnotation. 推奨される使用法の使用を禁止し、Getter/Setterなど必要なAnnotationをそれぞれ宣言することをお勧めします. @Value(無効)不変の対象を宣言します. 適切なAnnotationを使用する場合、setterメソッドは使用できません.
Setterを発表しても使えません.
推奨される使用法
@Valueには@EqualsAndHashCodeと@AllArgConstructorも含まれています.
@Getterと@ToStringのみを使用することをお勧めします.
じどうせいせいレコーダ
クラスごとにログを作成するのは面倒です.このとき、
IO処理やJDBC符号化を行う場合、
Checked Exceptionのため、
メソッドでjavaの
https://www.daleseo.com/lombok-useful-annotations/
https://ksshlee.github.io/spring/java/lombok/#tostring
@ToString(exclude = "password")
public class User {
private String id;
private String password;
}
複数のフィールドを持つ複雑なクラスでは、コンストラクタではなくコンストラクタを使用する場合にのみ使用します.コンストラクタモードを直接記述すると,符号化量が予想外に高い.
@Builer
は、コンストラクタをクラスに自動的に追加するため、操作が便利です.@Builder
public class User {
private Long id;
private String username;
private String password;
@Singular
private List<Integer> scores;
}
@Singular
の宣言をコレクションフィールドで宣言した後、すべての要素を一度にスキップすることなく要素を追加できます.User user = User.builder()
.id(1L)
.username("abc")
.password("1234")
.score(70)
.socre(80)
.build();
// User(id=1, username=dale, password=1234, scores=[70, 80])
@NoArgsConstructor推奨使用方法
パラメータとして
Use
@NoArgsConstructor
public class User{
@NonNull
private String id;
private String password;
}
Unusepublic class User{
private String id;
private String password;
public User(String id){
this.id = id
}
}
@AllArgsConstructor(無効化を推奨)@AllArgsConstructor
public class User {
private String id;
private String pwd;
}
User user = new User("userId", "userPwd");
このように初期設定が行われた場合.@AllArgsConstructor
public class User {
private String pwd;
private String id;
}
User user = new User("userId", "userPwd"); //pwd,id의 위치가 바꼈지만 입력 매게변수는 위치가 바뀌지 않았다.
public static class User {
private String pwd;
private String id;
@Builder
public User(String pwd, String id) {
this.pwd = pwd;
this.id = id;
}
}
User user = User.builder().pwd("userPwd").id("userId").build();
@Value
@Setter //ignore
public class User {
public String id;
public String password;
}
Setterを発表しても使えません.
推奨される使用法
@Valueには@EqualsAndHashCodeと@AllArgConstructorも含まれています.
@Getterと@ToStringのみを使用することをお勧めします.
クラスごとにログを作成するのは面倒です.このとき、
@Log
操作によりログフィールドが自動的に作成され、クラス名でログオブジェクトが作成され、割り当てられます.@Log
および@Slf4j
を含む様々な記録フレームワークの対応方法を提供する.@Log
public class LogExample {
//자동 생성
public static void main(String... args) {
log.info("TEST");
}
}
@NonNull Nullチェック@Log4j2
文を変数に追加すると、@NonNull
が自動的にチェックされます.変数がnull
を超えた場合、null
に異常が発生します.@NonNull @Setter
private String id;
obj.setId(null); // NullPointerException 발생
リソースを自動的に閉じるIO処理やJDBC符号化を行う場合、
NullPointerException
文のtry-catch-finally
節でfinally
を呼び出す方法は容易なことではなく、close()
文を使用することでリソースの自動閉鎖を確保することができる.@Cleanup Connection con = DriverManager.getConnection(url, user, password);
例外処理のスキップChecked Exceptionのため、
@Cleanup
またはthrows
構文で明示的に例外処理を行う必要がある場合があります.この場合、try-catch
の動作は、明示的な例外処理をスキップする.善し悪しは分かれる.@SneakyThrows(IOException.class)
public void printLines() {
BufferedReader reader = new BufferedReader(...);
for (String line; (line = reader.readLine()) != null; ) {
System.out.println(line);
}
}
同期メソッドでjavaの
@SneakyThrows
キーワードを宣言すると、オブジェクトレベルで同期に関連する複数の問題が発生する可能性があります.逆に、synchronized
操作を使用すると、仮想シーンレベルでより安全にロックを解除することができる.@Synchronized
public void hello() {
System.out.println("world");
}
ソースhttps://www.daleseo.com/lombok-useful-annotations/
https://ksshlee.github.io/spring/java/lombok/#tostring
Reference
この問題について([Java]Lombok宣言), 我々は、より多くの情報をここで見つけました https://velog.io/@modsiw/Java-lombok-어노테이션을-알아보자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol