Lombok
Lombokμ Java κ°λ°μμ λ°λ³΅μ μΈ μ½λ μμ±μ μ€μ¬μ£Όλ λΌμ΄λΈλ¬λ¦¬μ
λλ€. Getter, Setter, Constructor λ±μ μλμΌλ‘ μμ±ν΄μ£Όμ΄ κ°λ° μμ°μ±μ ν¬κ² ν₯μμν΅λλ€.
Lombok μ€μΉνκΈ°
λΉλλꡬλ₯Ό μ¬μ©νλ©΄ lombok μμ‘΄μ±μ μΆκ°νλ©΄ μ¬μ©ν μ μλ€. λΉλλꡬλ₯Ό μ¬μ©νμ§ μλλ€λ©΄, Lombok λΌμ΄λΈλ¬λ¦¬λ₯Ό λ€μ΄λ‘λ λ°μμ νλ‘μ νΈμ μΆκ°ν΄μΌ νλ€.
1.
λ€μ΄λ‘λ
2.
둬볡 λΌμ΄λΈλ¬λ¦¬ μ€μΉ
3.
νλ‘μ νΈμ μΆκ°
λ€μ΄λ‘λ
.jar νμ₯μκ° μμΆ νλ‘κ·Έλ¨ νμ₯μλ‘ μΈμλμ΄μ μμΆνμΌλ‘ μΈμλλ κ²½μ°λ CMD μμ μλ° μ€ν λͺ
λ Ήμ΄λ‘ μ€ννλ©΄ λλ€.
java - jar lombok.jar
Bash
볡μ¬
둬볡 λΌμ΄λΈλ¬λ¦¬ μ€μΉ
[Specify locationβ¦] λ²νΌμ ν΄λ¦νκ³ Eclipse μ€ν νμΌμ μ°Ύμμ μ§μ ν΄μ€λ€.
Eclipse.exe νμΌμ μ ννλ€
[Install / Update] λ²νΌμ λλ¬μ μ€μΉλ₯Ό μ§νν΄μ€λ€.
μ€μΉκ° μλ£λμμ΅λλ€.
μ€μΉκ° μλ£κ° λλ©΄ μ΄ν΄λ¦½μ€ μ€ν νμΌμ΄ μλ κ³³μ Lombok.jar λΌμ΄λΈλ¬λ¦¬ νμΌμ΄ 볡μ¬λκ³ eclipse.ini νμΌμ μ€μ μ½λκ° μΆκ°λ©λλ€.
νλ‘μ νΈμ μΆκ°
β’
Eclipse
β’
VS CODE
Eclipse
νλ‘μ νΈμ λΉλ ν¨μ€μ λΌμ΄λΈλ¬λ¦¬ νμΌμ μ νν΄μ μΆκ°ν΄ μ€λλ€.
1.
νλ‘μ νΈ μ°ν΄λ¦
2.
Build Path
a.
Configure Build Path
b.
Libraries ν
3.
Add JARsβ¦ λλ Add External JARsβ¦
a.
Add JARs
i.
νλ‘μ νΈ λ΄λΆμ μλ λΌμ΄λΈλ¬λ¦¬ νμΌμ μΆκ°νλ λ°©λ²
1.
νλ‘μ νΈ λ΄μ lib ν΄λ μμ±
2.
μ¬μ©ν λΌμ΄λΈλ¬λ¦¬ νμΌ λ³΅μ¬
3.
λΌμ΄λΈλ¬λ¦¬ νμΌ μ ν
b.
Add External JARs
i.
νλ‘μ νΈ μΈλΆ κ²½λ‘μ μλ λΌμ΄λΈλ¬λ¦¬ νμΌμ μΆκ°νλ λ°©λ²
1.
λΌμ΄λΈλ¬λ¦¬ νμΌ μ ν
VS CODE
vscode μμλ Java νλ‘μ νΈ μλμ libν΄λμ λΌμ΄λΈλ¬λ¦¬ νμΌμ μΆκ°νλ©΄ νλ‘μ νΈμ λΌμ΄λΈλ¬λ¦¬κ° μΆκ°λ©λλ€.
Lombok μ¬μ©νκΈ°
Lombook κΈ°λ₯μ μ¬μ©νλ λ°©λ²μ μμλ΄
λλ€.
μ΄λ
Έν
μ΄μ
| μ€λͺ
|
@Data | @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor ν¬ν¨ |
@Getter | λͺ¨λ νλμ getter λ©μλλ₯Ό μλ μμ± |
@Setter | λͺ¨λ νλμ setter λ©μλλ₯Ό μλ μμ±
(ν΄λμ€ λ 벨 μ μ© μ λͺ¨λ νλμ μ μ©) |
@ToString | λͺ¨λ νλλ₯Ό ν¬ν¨ν toString() λ©μλ μλ μμ± |
@EqualsAndHashCode | equals() λ° hashCode() λ©μλ μλ μμ± |
@NoArgsConstructor | 맀κ°λ³μ μλ κΈ°λ³Έ μμ±μ μλ μμ± |
@AllArgsConstructor | λͺ¨λ νλλ₯Ό ν¬ν¨ν μμ±μ μλ μμ± |
@RequiredArgsConstructor | final λλ @NonNull νλλ§ ν¬ν¨νλ μμ±μ μλ μμ± |
@Value | @Dataμ μ μ¬νμ§λ§ λΆλ³ κ°μ²΄(immutable object) μμ±
(final νλ μ μ©) |
@Builder | λΉλ ν¨ν΄μ μ μ©νμ¬ κ°μ²΄ μμ± λ°©μ μ 곡 |
@Singular | @Builder μ¬μ© μ 컬λ μ
(List, Set, Map) νλλ₯Ό κ°λ³μ μΌλ‘ μΆκ° κ°λ₯ |
@Slf4j | private static final Logger log νλ μλ μμ±
(Slf4j λ‘κ±° μ¬μ©) |
@Log | Java κΈ°λ³Έ λ‘κΉ
(java.util.logging.Logger) μ¬μ© |
@Cleanup | AutoCloseableμ ꡬνν 리μμ€λ₯Ό μλμΌλ‘ λ«μμ€
(try-with-resources λ체) |
@SneakyThrows | try-catch μμ΄ μμΈλ₯Ό λμ§ μ μλλ‘ μ²λ¦¬ |
μμμ½λ
β’
Lombok μ¬μ©νμ§ μμ μ½λ
β’
Lombok μ μ©ν μ½λ
Lombok μ¬μ©νμ§ μμ μ½λ
/**
* κ²μκΈ μ 보
* - κ²μκΈ λ²νΈ
* - μ λͺ©
* - μμ±μ
* - λ΄μ©
* - λ±λ‘μΌμ
* - μμ μΌμ
*/
public class Board {
// λ©€λ² λ³μ (νλ)
private int no;
private String title;
private String writer;
private String content;
private String createdAt;
private String updatedAt;
// κΈ°λ³Έ μμ±μ
public Board() {
this("μ λͺ©μμ", "μμ±μμμ", "λ΄μ©μμ");
}
// 맀κ°λ³μκ° μλ μμ±μ - title, writer, content
public Board(String title, String writer, String content) {
this.title = title;
this.writer = writer;
this.content = content;
}
// μ 체 맀κ°λ³μ μμ±μ
public Board(int no, String title, String writer, String content, String createdAt, String updatedAt) {
this.no = no;
this.title = title;
this.writer = writer;
this.content = content;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
}
// getter, setter
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(String updatedAt) {
this.updatedAt = updatedAt;
}
// toString
@Override
public String toString() {
return "Board [no=" + no + ", title=" + title + ", writer=" + writer + ", content=" + content + ", createdAt="
+ createdAt + ", updatedAt=" + updatedAt + "]";
}
}
Java
볡μ¬
Lombok μ μ©ν μ½λ
// @Data // @Data μ΄λ
Έν
μ΄μ
μ μλ μ΄λ
Έν
μ΄μ
μΌλ‘ λ체 κ°λ₯
@NoArgsConstructor // κΈ°λ³Έ μμ±μ μλ μμ±
@AllArgsConstructor // λͺ¨λ νλλ₯Ό ν¬ν¨ν μμ±μ μλ μμ±
@RequiredArgsConstructor // @NonNull λλ final νλλ₯Ό ν¬ν¨νλ μμ±μ μλ μμ±
@Getter // λͺ¨λ νλμ getter μλ μμ±
@Setter // λͺ¨λ νλμ setter μλ μμ±
@ToString // toString() μλ μμ±
@EqualsAndHashCode // equals(), hashCode() μλ μμ±
public class Board {
// λ©€λ² λ³μ (νλ)
private int no;
private String title;
private String writer;
private String content;
private String createdAt;
private String updatedAt;
}
Java
볡μ¬
@RequiredArgsConstructor μ¬μ©νκΈ°
/**
* κ²μκΈ μ 보
* - κ²μκΈ λ²νΈ
* - μ λͺ©
* - μμ±μ
* - λ΄μ©
* - λ±λ‘μΌμ
* - μμ μΌμ
*/
@Getter
@Setter
@ToString
@RequiredArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
public class Board {
private int no;
/** μ λͺ© (νμ) */
@NonNull private String title;
/** μμ±μ (νμ) */
@NonNull private String writer;
/** λ΄μ© (νμ) */
@NonNull private String content;
private String createdAt;
private String updatedAt;
}
Java
볡μ¬
Lombok μΌλ‘ λΉλ ν¨ν΄ μ μ©νκΈ°
import lombok.*;
/**
* κ²μκΈ μ 보
* - κ²μκΈ λ²νΈ
* - μ λͺ©
* - μμ±μ
* - λ΄μ©
* - λ±λ‘μΌμ
* - μμ μΌμ
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Board {
private int no;
/** μ λͺ© (νμ) */
@NonNull private String title;
/** μμ±μ (νμ) */
@NonNull private String writer;
/** λ΄μ© (νμ) */
@NonNull private String content;
private String createdAt;
private String updatedAt;
}
Java
볡μ¬
β’
λΉλ ν¨ν΄μΌλ‘ μμ±
public class Main {
public static void main(String[] args) {
// Builder ν¨ν΄μ μ΄μ©ν κ°μ²΄ μμ±
Board board = Board.builder()
.no(1)
.title("μ λͺ© μμ ")
.writer("μμ±μ μμ ")
.content("λ΄μ© μμ ")
.createdAt("2025-03-24")
.updatedAt("2025-03-24")
.build();
System.out.println(board);
}
}
Java
볡μ¬