π[Spring] @AllArgsConstructorμ 무μμΌκΉμ?
π Intro.
- βοΈ
@AllArgConstructorλ Lombokμμ μ 곡νλ μ΄λ Έν μ΄μ μΌλ‘ λͺ¨λ νλλ₯Ό λ§€κ°λ³μλ‘ κ°λ μμ±μλ₯Ό μλμΌλ‘ μμ±ν΄ μ€.
β 1οΈβ£ μ£Όμ νΉμ§.
1. λͺ¨λ νλλ₯Ό ν¬ν¨ν μμ±μ μΆκ°.
- βοΈ ν΄λμ€μ μ μΈλ λͺ¨λ νλλ₯Ό μ΄κΈ°ννλ μμ±μλ₯Ό μλμΌλ‘ μμ±ν¨.
- βοΈ μλμΌλ‘ μμ±μλ₯Ό μμ±νμ§ μμλ λλ―λ‘ μ½λκ° κ°κ²°ν΄μ§.
2. μ£Όλ‘ κ°μ²΄ μμ±μ μ¬μ©.
- βοΈ μμ‘΄μ± μ£Όμ , DTO ν΄λμ€ μμ± λ± κ°μ²΄ μμ± μ νλλ₯Ό μ΄κΈ°ννλ κ²½μ°μ μ μ©ν¨.
3. Builder ν¨ν΄κ³Ό νΈν.
- βοΈ
@AllArgsConstructorλ μ£Όλ‘ Builder ν¨ν΄κ³Ό ν¨κ» μ¬μ©λμ΄ κ°μ²΄ μ΄κΈ°ν λ°©μμ μ μ°νκ² μ²λ¦¬ν μ μλ€.
β 2οΈβ£ μ¬μ© μμ .
1. κΈ°λ³Έ μ¬μ©.
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class MyClass {
private String name;
private int age;
}
- βοΈ μ μ½λλ λ€μκ³Ό κ°μ μμ±μλ₯Ό μλμΌλ‘ μμ±ν¨.
public MyClass(String name, int age) { this.name = name; this.age = age; }
2. μν°ν° ν΄λμ€μμμ μ¬μ©.
- βοΈ JPAμμ λ°μ΄ν°λ² μ΄μ€μ λ§€νλλ μν°ν° ν΄λμ€μμ κ°μ²΄λ₯Ό μ΄κΈ°νν λ μ μ©ν¨.
```java
import jakarta.persistence.Entity;
import lombok.AllArgsConstructor;
@Entity
@AllArgsConstructor
public class User {
private Long id;
private String username;
private String email;
}
- βοΈ μ μμ±μλ₯Ό ν΅ν΄ μ½κ² μν°ν° κ°μ²΄λ₯Ό μ΄κΈ°νν μ μμ.
```java
User user = new User(1L, "Alice", "alice@example.com");
3. DTO κ°μ²΄ μμ±μ νμ©.
- βοΈ λ°μ΄ν°λ₯Ό μ λ¬νκ±°λ μλ΅ν DTO κ°μ²΄λ₯Ό μ΄κΈ°ννλ λ° μ¬μ©λ¨.
```java
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class UserDTO {
private String username;
private String email;
}
- βοΈ `new UserDTO("Alice", "alice@example.com")`μ κ°μ ννλ‘ κ°μ²΄λ₯Ό μμ±ν μ μμ.
## β
3οΈβ£ `@AllArgsConstructor`μ λ€λ₯Έ Lombok μ΄λ
Έν
μ΄μ
.
### 1. `@NoArgsConstructor`
- βοΈ λ§€κ°λ³μκ° μλ κΈ°λ³Έ μμ±μλ₯Ό μλμΌλ‘ μμ±.
### 2. `@RequiredArgsConstructor`
- βοΈ `final` λλ `@NonNull`λ‘ μ μΈλ νλλ§ ν¬ν¨νλ μμ±μλ₯Ό μλμΌλ‘ μμ±.
### 3. `@Builder`μ μ‘°ν©.
- βοΈ Builder ν¨ν΄μ ν΅ν΄ κ°λ
μ±κ³Ό μ μ°μ±μ λμΌ μ μμ.
```java
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor
@Builder
public class MyClass {
private String name;
private int age;
}
- βοΈ
MyClass.builder().name("Alice").age(25).builder();ννλ‘ κ°μ± μμ± κ°λ₯.
β 4οΈβ£ μ₯μ .
1. μ½λμ κ°κ²°ν.
- βοΈ μμ±μλ₯Ό μλμΌλ‘ μμ±ν νμ μμ΄ λͺ¨λ νλλ₯Ό ν¬ν¨νλ μμ±μλ₯Ό μλμΌλ‘ μμ±ν΄μ€.
2. μ μ§λ³΄μμ± ν₯μ.
- βοΈ ν΄λμ€ νλκ° λ³κ²½λ κ²½μ° μμ±μ μ½λλ μλμΌλ‘ λ³κ²½λλ―λ‘ μΌκ΄μ±μ μ μ§ν μ μμ.
3. κ°μ²΄ μ΄κΈ°ν μ©μ΄.
- βοΈ κ°μ²΄λ₯Ό ν λ²μ μ΄κΈ°ννλλ° μ μ©νλ©° DTO, μν°ν°, VO ν΄λμ€ λ± λ€μν κ³³μμ νμ© κ°λ₯.
β 5οΈβ£ μ£Όμμ .
1. νλ κ°μ μ¦κ° μ κ°λ μ± μ ν.
- βοΈ νλκ° λ§μ κ²½μ° μμ±μ λ§€κ°λ³μμ μμλ₯Ό μλͺ» μ¬μ©ν κ°λ₯μ±μ΄ μμ.
- βοΈ μ΄λ° κ²½μ°
@Builderμ¬μ©μ κΆμ₯.2. JPAμ ν¨κ» μ¬μ©ν λ.
- βοΈ μ΄λ° κ²½μ°
- βοΈ JPA μν°ν° ν΄λμ€μμ
@AllArgsConstructorλ λͺ¨λ νλλ₯Ό μ΄κΈ°ννλ―λ‘ κΈ°λ³Έ μμ±μ(@NoArgsConstructor)λ ν¨κ» μΆκ°ν΄μΌ 리νλμ κ³Ό νΈνλ¨.@AllArgsConstructor @NoArgsConstructor public class User
π μ 리
- βοΈ
@AllArgsConstructorλ λͺ¨λ νλλ₯Ό λ§€κ°λ³μλ‘ λ°λ μμ±μλ₯Ό μλμΌλ‘ μμ±νμ¬ μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν΄.- βοΈ μ£Όλ‘ DTO, μν°ν° ν΄λμ€μ κ°μ²΄ μ΄κΈ°νμ μ¬μ©λλ©°, Builder ν¨ν΄κ³Ό ν¨κ» μ¬μ©νλ©΄ λμ± ν¨κ³Όμ μ.