초웹개_스프링5_DI(1)

네코·2022년 4월 28일
0

초웹개

목록 보기
1/10

의존 주입 (DI)

의존

  • 한클래스가 다른 클래스를 필드에 갖거나 다른 클래스의 메서드를 실행하는 것을 의존이라고 함
  • 변경에 의해 영향을 받는 관계

ex) 회원가입 기능에서 MemberRegisterService 클래스가 DB 처리를 위해 MemberDAO 클래스의 메서드를 사용하는 것

주입

  • 의존하는 객체를 직접 생성하는 대신 의존 객체를 전달받는 방식을 주입한다고 함.
    생성자에서 인자로 의존 객체를 전달 or setter 이용하는 등의 방법

이러한 방식은 객체 변경을 유연하게 함.
만약 클래스 내부 필드에서 직접 의존 객체를 생성한다면 이후 의존 객체의 변경이 있을 경우 해당 객체를 사용하는 클래스의 코드를 전부 수정해야함.
DI 방식을 통하면 객체를 생성하는 한 부분만 수정하면 됨.

예제

회원가입

  • 회원 데이터
    • Member (역할)
    • WrongIdPasswordException( 구현)
    • MemberDao(역할로 만들고, 여러 종류의 멤버 구현에 따라 interface 상속해 구현)
  • 회원 가입 처리
    • DuplicateMemberException(구현)
    • RegisterRequest(역할)
      • 비밀번호와 비밀번호 확인 문자열의 일치를 클래스 내부에서 하게함.
    • MemberRegisterService(구현으로 하되 역할로 해도 가능할듯 ??)
  • 암호 변경 관련 클래스
    • MemberNotFoundException (구현)
    • ChangePasswordService(구현으로 하되 역할로 해도 가능할듯 ??)

객체 조립기(assembler)

보통 실제 객체 생성 코드는 main 메서드에 존재.
책에서는 객체를 생성하고 주입하는 부분을 따로 클래스로 작성함.
Assembler 클래스에서 객체를 생성하고 주입하고 getter를 통해 main메서드에서 받아옴.

0개의 댓글