View
[μ€νλ§] DI(Dependency Injection): μμ‘΄μ± μ£Όμ μ΄λ?
μ± μ½λ κ°μ 2022. 10. 20. 15:26Dependency, μμ‘΄μ΄λ?
ν΄λμ€ λ΄λΆμμ μ§μ μμ‘΄ κ°μ²΄λ₯Ό μμ±νλ κ²μ μ½μ§λ§ μ μ§λ³΄μ κ΄μ μμ λ¬Έμ λ₯Ό μ λ°ν μ μλ€
public class MemberRegisterService{
private MemberDao member= new MemberDao();
public void regist(RegisterRequest req){
Member member = memberDao.selectByEmail(req.getEmail());
// κ°μ μ΄λ©μΌ μλ€λ©΄ μμΈ λ°μ
if (member!= null){
throw new DuplicateMemberException("dup email"+ req.getEmail());
}
//κ°μ μ΄λ©μΌ μλ νμμ΄λΌλ©΄ λλΉμ μ½μ
Member newMember= new Member(
req.getEmail(), req.getPassword(), req.getName()
);
memberDao.insert(newMember);
}
}
MemberRegisterService ν΄λμ€λ DB μ²λ¦¬λ₯Ό νκΈ° μν΄ MemberDao ν΄λμ€μ λ©μλκ° νμνλ€
μ΄λ κ² ν ν΄λμ€κ° λ€λ₯Έ ν΄λμ€μ λ©μλλ₯Ό μ€νν λ μ΄λ₯Ό μμ‘΄ μ΄λΌκ³ νννλ€
" MemberRegisterService ν΄λμ€κ° MemberDao ν΄λμ€μ μμ‘΄νλ€ "
DI(Dependency Injection)λ₯Ό ν΅ν μμ‘΄ μ²λ¦¬
:κ°μ²΄ κ°μ μμ‘΄μ±(κ°μ²΄ κ°μ κ΄κ³λ§Ίμ)μ κ°μ²΄ λ΄λΆμμ μ§μ ν΄μ£Όλ λμ , μΈλΆμμ κ°μ²΄λ₯Ό μμ±ν΄μ λ£μ΄μ£Όλ λ°©μμ λ§ν¨
μλ₯Ό λ€μ΄ μμ MemberRegisterService ν΄λμ€μ DIλ°©μμ μ μ©νκ² λλ€λ©΄ μμ±μλ₯Ό ν΅ν΄μ μμ‘΄ κ°μ²΄λ₯Ό μ λ¬ λ°κ² λλ€
public MemberRegisterService(MemberDao member){
this.member= member;
}
μ 체μ½λ
public class MemberRegisterService{
private MemberDao member;
public MemberRegisterService(MemberDao member){
this.member= member;
}
public Long regist(RegisterRequest req){
Member member= memberDao.selectByEmail(req.getEmail());
// κ°μ μ΄λ©μΌ μλ€λ©΄ μμΈ λ°μ
if (member!= null){
throw new DuplicateMemberException("dup email"+ req.getEmail());
}
//κ°μ μ΄λ©μΌ μλ νμμ΄λΌλ©΄ λλΉμ μ½μ
Member newMember= new Member(
req.getEmail(), req.getPassword(), req.getName()
);
memberDao.insert(newMember);
}
}
DIλ₯Ό μ μ©ν κ²°κ³Ό MemberRegisterService ν΄λμ€λ₯Ό μ¬μ©νλ μ½λλ λ€μκ³Ό κ°μ΄ MemberRegisterServiceκ°μ²΄λ₯Ό μμ±ν λ μ¬μ©μμ MemberDao κ°μ²΄λ₯Ό μ λ¬ν΄ νλ€
MemberDao dao = new MemberDao();
//μμ‘΄ κ°μ²΄λ₯Ό μμ±μλ₯Ό ν΅ν΄ μ£Όμ
νλ€
MemberRegisterService svc = new MemberRegisterService(dao);
μ€νλ§μ μ΄μ©ν κ°μ²΄ 쑰립과 μ¬μ©μ λ€μ κΈμμ μ°λλ‘ ν¨!
μ°Έκ³ μλ£: μ΄λ³΄ μΉ κ°λ°μλ₯Ό μν μ€νλ§ νλ‘κ·Έλλ° μ λ¬Έ(μ μ: μ΅λ²κ· )