인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

홍식님의 프로필 이미지
홍식

작성한 질문수

스프링 핵심 원리 - 기본편

구성영역과 사용역역 관련 질문입니다.

작성

·

171

1

solid원칙에 따라 구성영역과. 사용영역으로 나누어 사용영역에서의 변경이 없어야 하는 점은 납득이됩니다 !

그런데 MemberRepository를 구현한 MemoeyMemberRepository 와 실제 db를 연결하는 DbMemberRepository가 존재한다고 할 때 ,

appconfig없이 memberserviceimpl에서 private final MemberRepository = MemoeyMemberRepository; 를 MemberRepository = DbMemberRepository;로 바꿔주는 방법이있고

appconfig안에서

public MemberService memberService()
{
    return new MemberServiceimpl(new MemoryMemberRepository());
}
위 메서드를
 public MemberService memberService()
    {
        return new MemberServiceimpl(new DbmemberRepository());
    }

이렇게 바꿔주는 방법이 있는데 둘 다 코드 수정을 한번만 하면 되니까 아무거나 사용하면 되는게 아닐까요 ?

appconfig를 사용하는게 오직 solid를 지키기위해서만 사용하는것인지 궁금합니다 !

글솜씨가 없어 질문이 잘 이해될지 모르겠습니다 ,,, 죄송합니당

답변 1

2

안녕하세요. 홍식님, 공식 서포터즈 David입니다.

구성과 사용의 관심사를 분리한 이유가 구현체를 변경할 때 구성 쪽에서만 변경되게 하기 위함입니다.

만약 구현체 변경을 위해 사용영역을 건드리게 된다면 구성이라는 관심사가 다시 사용영역으로 흩어지게 됩니다. 이렇게 된다면 굳이 관심사를 분리하여 구현체가 변경되는 포인트를 한 곳으로 몰아놓은 이점이 사라지게 됩니다.

감사합니다.

홍식님의 프로필 이미지
홍식
질문자

답변 감사합니다!!

 

홍식님의 프로필 이미지
홍식

작성한 질문수

질문하기