π @RequiredArgsConstructor - Lombok
@RequiredArgsConstructorλ ν΄λμ€μμ λ°λμ μ΄κΈ°νλμ΄μΌ νλ νλλ§μ λ§€κ°λ³μλ‘ λ°λ μμ±μλ₯Ό μλμΌλ‘ λ§λ€μ΄ μ€λλ€.
μ΄λ λμμ΄ λλ νλλ finalλ‘ μ μΈλ νλμ΄κ±°λ @NonNullμ΄ λΆμ νλμ
λλ€.
λν μμ±μμ μ΄λ
Έν
μ΄μ
μ μΆκ°ν μ μλλ‘ νλ onConstructor μ΅μ
λ ν¨κ» μ§μν©λλ€.
π ν΅μ¬ μμ½
- final νλ β 무쑰건 μμ±μμ ν¬ν¨
- @NonNull νλ β μμ±μμ ν¬ν¨ + null 체ν¬
// μμ @RequiredArgsConstructor public class Monster { private final String name; private final MonsterStage stage; @NonNull private MonsterAttribute attribute; private int hp; }
β Lombokμ΄ μμ±νλ μμ±μ
public Monster(String name,
MonsterStage stage,
MonsterAttribute attribute) {
this.name = name;
this.stage = stage;
this.attribute = attribute;
}
- onConstructor β μμ±μμ μ΄λ
Έν
μ΄μ
μΆκ° κΈ°λ₯ (μ: @Autowired)
// μμ @RequiredArgsConstructor(onConstructor_ = @Autowired) public class MonsterService { private final MonsterRepository repository; }
π¨ μ£Όμν μ (μ€μ)
βλͺ¨λ μμ±μλ₯Ό λ체νλ€βλ κ°λ μ μλ
- β μ ν νλκ° λ§μ λλ λΆμ‘±ν μ μμ
- β μμ±μ λ΄λΆμμ κ²μ¦ λ‘μ§μ λ£κΈ° μ΄λ €μ
- β Entityμμ 무λΆλ³νκ² μ°λ©΄ λλ©μΈ λ¬΄κ²°μ± μ½ν κ°λ₯
β int hp νλκ° νμλ‘ μ΄κΈ°ν λμ§ μμλ λλ μ΄μ
// μμ
@RequiredArgsConstructor
public class Monster {
private final String name;
private final MonsterStage stage;
@NonNull
private MonsterAttribute attribute;
private int hp;
}
μ΄ μ§λ¬Έμ μ΄ν΄νλ©΄ Java κ°μ²΄ μμ± μ리 + Lombok μ€κ³ μ² νμ΄ ν λ²μ μ 리λ©λλ€.
κ²°λ‘ λΆν° λ§νλ©΄:
private int hp;λ βμλ° νμ
νΉμ±μ μλμΌλ‘ μ΄κΈ°νλλ©°, Lombok μ
μ₯μμλ βλ°λμ μμ±μμμ λ°μμΌ ν νμ κ°βμ΄ μλκΈ° λλ¬Έμ
λλ€.β
λ¨κ³λ³λ‘ μ€λͺ νκ² μ΅λλ€.
1οΈβ£ μλ° κ°μ²΄λ βμλ μ΄κΈ°ν(default initialization)βκ° μλ€
βοΈ Javaμ μΈμ€ν΄μ€ νλ κΈ°λ³Έκ°
- νμ : int, κΈ°λ³Έκ°: 0
- νμ : long, κΈ°λ³Έκ°: 0L
- νμ : boolean, κΈ°λ³Έκ°: false
- νμ : Object, κΈ°λ³Έκ°: null
2οΈβ£ Lombokμ κ΄μ : βνμ μ΄κΈ°νλ 무μμΈκ°?β
Lombokμ μ΄λ κ² μ μν©λλ€:
βμμ±μμμ λ°λμ κ°μ λ°μμΌλ§ μ μμ μΈ κ°μ²΄ μνκ° λλ νλβ
κ·Έλμ Lombokμ΄ βνμβλ‘ λ³΄λ κΈ°μ€μ λ± 2κ°μ§
- final νλ
β μμ±μ μλλ©΄ μ΄κΈ°ν λΆκ° β - @NonNull νλ
β nullμ΄λ©΄ μλ―Έ μλ μν β
3οΈβ£ hpλ μ νμκ° μλκ°?
μ΄μ 1. κΈ°λ³Έκ°μ΄ μ‘΄μ¬νλ€.
- int β 0
- JVMμ΄ μλ 보μ₯
μ΄μ 2. finalμ΄ μλλ€.
- μμ±μ μ΄νμλ κ° λ³κ²½ κ°λ₯
- βλ°λμ μμ± μμ μ μ ν΄μ ΈμΌ νλ€βλ κ³μ½μ΄ μμ
μ΄μ 3. λλ©μΈ μλ―Έμ βμ΄κΈ°κ°βμ΄ μ ν¨ν μλ μμ
- μλ₯Ό λ€μ΄ μ’ μ‘±(MonsterSpecies) λ¨κ³μμλ hpλ βκΈ°λ³Έ μ€ν―β, λμ€μ μΈμ€ν΄μ€ μμ± μ μΈν .