스프링 핵심원리(2)

cw k·2021년 1월 6일
0

스프링핵심원리

목록 보기
2/7
post-thumbnail

1. 구현체에서 직접 객체 생성시 문제점

// MemberServiceImpl.java
public class MemberServiceImpl implements MemberService {
	private final MemberRepository memberRepository = new MemoryMemberRepository();
}
  • 이와같이 구현체에서 직접 객체를 생성시 추후 MemberRepository의 구현 방식이 변경되면 클라이언트 단의 소스변경이 불가피하다.

  • 따라서 아래와 같이 변경한다.

2. 해결방법

// MemberServiceImpl.java
public class MemberServiceImpl implements MemberService {
    private final MemberRepository memberRepository;

    public MemberServiceImpl(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
	}
}

// AppConfig.java
public class AppConfig {
	public MemberService memberService() {
		return new MemberServiceImpl(new MemoryMemberRepository());
    }
}
  • 생성자를 통해 구현체를 주입하는 방식으로 변경 후,

  • 설정파일을 만들어 설정파일에서 구현체를 주입하도록 한다.

  • 이와 같은 방식을 통해 DIP원칙을 지키게 되고 추후 구현체변경시 설정파일에서만 변경해주면 된다.

0개의 댓글