본문 바로가기

SpringBoot

10월3일 Spring Boot discount의 구조 및 실행클래스 구조 (다형성)

(인터페이스) (객체명) = new (인터페이스를 구현받은 객체);

 

상품에 따라 다르게 적용될 discount VO의 구조

 

DisCountPolicy 인터페이스 

모든 discount의 뼈대가 되는 인터페이스이다.

 

FixDiscountPolicy

위 DisCountPolicy를 상속받아 만들어진 구현 클래스이다.

 

실행 클래스 구조

AppConfig appConfig = new AppConfig();

MemberService memberService = appConfig.memberService();

이 방법으로 구현할 경우 Spring Been들이 모여있는 appConfig에서 memberService를 찾아온다

 

혹은

ApplicationContext applicationContext = new AnnocationConfigApplicationContext(AppConfig.class);

Spring에서 어노테이션 기반으로 app을 구현할 경우 AppConfig를 구현한다.

위 방법으로 ApplicationContext 를 구현하면 Spring이 실행될때 매개변수에 작성한 AppConfig.class를 읽어 거기에 명시된 class들 중 어노테이션이 있는 class들을 SpringBeanContainer에 등록하게 되는데

이 SpringBeanContainer 에서 bean객체를 가져오게 된다.

 

MemberApp

//MemberService memverService = new MemberServiceImpl();

MemberService memberService = applicationContext.getBean("memberService" , MemberService.class);

ApplicationContext에서 bean을 가져오는 방법, //applicationContext.getBean("bean 명칭" , 해당bean의 타입);

MemberServiceImpl는 MemberService인터페이스를 상속받아 만들어진 구현클래스(자식)이다.

 

Member member = new Member(1L , "memberA" , Grade.VIP);

memberService.join(member);

여기서 member객체를 생성하고 

생성한 member객체를 memberService에 넘겨주게 된다.

 

MemberService의 join은 

MemberService 에서 Override되어 있는 MemoryMemeberRepository()의 join을 사용하여 

member값을 저장한다,

 

Member fineMember = MemberService.findMember(1L);

MemberService 에서 Override되어 있는 MemoryMemeberRepository()의 findMember를 사용하여 매개변수 1L에 해당하든 반환값 Member를 저장한 Member들 중에서 찾아온다.,