View

λ°˜μ‘ν˜•

Dependency, μ˜μ‘΄μ΄λž€?

클래슀 λ‚΄λΆ€μ—μ„œ 직접 의쑴 객체λ₯Ό μƒμ„±ν•˜λŠ” 것은 μ‰½μ§€λ§Œ μœ μ§€λ³΄μˆ˜ κ΄€μ μ—μ„œ 문제λ₯Ό μœ λ°œν•  수 μžˆλ‹€

 

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);

 

 

 

μŠ€ν”„λ§μ„ μ΄μš©ν•œ 객체 쑰립과 μ‚¬μš©μ€ λ‹€μŒ κΈ€μ—μ„œ 쓰도둝 함!

 

 

참고자료: 초보 μ›Ή 개발자λ₯Ό μœ„ν•œ μŠ€ν”„λ§ ν”„λ‘œκ·Έλž˜λ° μž…λ¬Έ(μ €μž: μ΅œλ²”κ· )

λ°˜μ‘ν˜•
Share Link
reply
λ°˜μ‘ν˜•
Β«   2024/09   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30