• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

AppConfig에 관한 질문

23.12.19 17:11 작성 23.12.19 17:12 수정 조회수 204

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]

안녕하세요 수업중에 의문점이 생겨서 질문드립니다.

 

public class AppConfig {

    private MemberRepository memberRepository(){
        return new MemoryMemberRepository();
    }
    private DiscountPolicy discountPolicy(){
        return new RateDiscountPolicy();
    }
    public MemberService memberService(){
        return new MemberServiceImpl(memberRepository());
    }

    public OrderService orderService(){
        return new OrderServiceImpl(memberRepository(),discountPolicy());
    }
}

객체의 인스턴스를 만들때 이렇게 정의한것과

public class AppConfig {

    private MemberRepository memberRepository = new MemoryMemberRepository();

    private DiscountPolicy discountPolicy = new RateDiscountPolicy();

    public MemberService memberService(){
        return new MemberServiceImpl(memberRepository);
    }

    public OrderService orderService(){
        return new OrderServiceImpl(memberRepository,discountPolicy);
    }
}

이렇게 정의했을때의 차이점이 있나요?

제 생각에는 오히려 위의 경우가 Memberservice,Orderservice에서 memberRepository()를 두번 사용하니 new로 서로 다른 인스턴스가 생성되어 만약 memorymemberRepository의 저장소가 static이 아니라면 오류가 생길것 같은데 제 생각이 잘못된 것인지 궁금합니다,

답변 1

답변을 작성해보세요.

4

David님의 프로필

David

2023.12.20

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

생각하신 게 맞습니다.

다만, AppConfig는 이후에 스프링이 적용되어지면 양상이 달라집니다.

그때는 전자와 같이 코드를 구성해야만 싱글톤 빈을 보장하게 됩니다. (@Configuration, @Bean 적용시)

이런 부분들을 자연스럽게 이어지게 하기 위해 예제 코드가 구성되어 있습니다.

자세한 사항은 이후 강의들에서 다루고 있으니 참고해 주세요.

감사합니다.

조태님의 프로필

조태

질문자

2023.12.20

감사합니다 ㅎㅎ 저도 다음강의를 보고 뭐가 다른것인지 깨우쳤네요 좋은하루되세요 😀