[Spring] @AllArgsConstructor, @RequiredArgsConstructor μ¬μ©μ μ§μν μ΄μ
μΈν΄ μνμ νλ©΄μ @AllArgsConstructor, @RequiredArgsConstructor μ΄ λ μ΄λ Έν μ΄μ μ λ³Έ μ μ΄ μμλλ°, κ·Έλ₯ μ¬μ©μ μνλ거ꡬλλΌκ³ λ§ μκ°νμλ€. κ·Έλμ μ΄λ² νλ‘μ νΈμμλ μ¬μ©μ μ§μνκ³ μμλλ° λ¬Έλ© μ μ§μν κΉλΌλ μλ¬Έμ΄ λ€μλ€!
μΌλ¨ spring diλΆν° μμ±νμλ©΄!
Spring DIλ?
DIλ μ€νλ§ ν΅μ¬ κΈ°μ μ΄λΌκ³ μκ°νλ μμ‘΄μ± μ£Όμ μ΄λ€. κ°μ²΄λ€κ°μ μμ‘΄μ±μ μ€μ΄κΈ° μν΄ μ¬μ©λλ μ€νλ§ IoC 컨ν μ΄λμ ꡬ체μ μΈ κ΅¬νλ°©μμ λ§νλ€. μμ‘΄μ± μ£Όμ νλ λ°©λ²μλ μμ±μ μ£Όμ , νλ μ£Όμ , setter μ£Όμ μΈκ°κ° μ‘΄μ¬νλλ° κ·Έ μ€μμ μ€νλ§μμ κ°μ₯ λ§μ΄ μ¬μ©νκ³ κΆμ₯νλ λ°©μμ μμ±μ μ£Όμ μ΄λ€.
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired // μμ±μκ° νλλ§ μμ κ²½μ°μλ μλ΅ κ°λ₯
public UserService(UserRepository userRepository, MemberService memberService) {
this.userRepository = userRepository;
}
}
μ΄λ°μμΌλ‘ μ°λ©΄ λλ€.
νμ§λ§ μ΄λ° λ°©μμ μ€νλ§μμλ @AllArgsConstructor, @RequiredArgsConstructor μ΄ μ΄λ Έν μ΄μ νλλ§μΌλ‘ μμ±μ μ£Όμ μ μΌμΌμ΄ ν΄μ£Όμ§ μμλ λλ€.
DTOμμ @AllArgsConstructor μ¬μ©νκ² λλ©΄ μ 체 νλΌλ―Έν°λ₯Ό κ°μ§λ μμ±μ μ μΈμ ν μ μκ³ , Controllerμ Serviceμμλ @RequiredArgsConstructorμ΄κ±Έ μ¬μ©ν΄μ μμ±μ μ μΈμ κ°κ²°νκ² νλ©΄μ DIκ° λ μ μλλ‘ νλ€.
κ·Όλ° μ΄ μ¬μ©μ μ§μν΄μΌ νλ μ΄μ κ° μλ€κ³ νλ€
@Getter
@AllArgsConstructor
public class Member {
public String email;
public String nickname;
}
ν΄λΉ κ°μ²΄λ₯Ό μμ±νκΈ° μν΄μλ μλμ κ°μ μμ± λ°©μμ μ¬μ©νκ² λλλ°
Member member = new Member("email", "nickname");
λ§μ½ λ³μ μ μΈ μμλ₯Ό μλμ κ°μ΄ λ°κΏ¨λ€κ³ μ³€μ λ μμκ° λ°λμμ΄λ κ°μ²΄ μμ±μλ λ¬Έμ κ° μκ² λκ³ κ²°κ΅ μλͺ»λ κ°μ²΄κ° μμ±λ κ°λ₯μ±μ΄ μκ² λλ€.
@Getter
@AllArgsConstructor
public class Member {
public String nickname;
public String email;
}
λ°λΌμ λλ DTOμλ ν΄λΉ μ΄λ Έν μ΄μ μ μ¬μ© μνκ³ @Getterμ @Builderλ§ μ¬μ©νκ³ μλ€!
κ·Όλ° μκ°ν΄λ³΄λ©΄ Controllerλ Serviceμμ @RequiredArgsConstructorλ₯Ό μ¬μ©ν΄λ λ¬Έμ κ° μλκ±° μλκ°λΌλ μκ°μ ν΄μ μ°Ύμλ΄€λ€.
ν΄λΉ κΈμ 보면 κΉμν κ°μ¬λμ @AllArgsConstructor μ¬μ©μ μ§μνμ§λ§ @RequiredArgsConstructorλ μ¬μ©νκ³ μλ€κ³ νλ€!
κ·Όλ° λλ μΌλ¨μ? λ€λ₯Έ κ³³μμλ μ μ΄λ Έν μ΄μ μ μ¬μ©νμ§ μμΌλκΉ μΌκ΄μ±μ μ μ§νλ €κ³ μ¬μ©μ μνκΈ°λ νκ³ , μ½λλ₯Ό λ κΌΌκΌΌν 체ν¬νλ λ²λ¦μ λ€μ΄κΈ° μν΄μ μ¬μ©νμ§ μκΈ°λ‘ νλ€!!