스프링 핵심 원리 1

스프링 핵심 원리 이해2 (객체 지향 원리 적용)

King of Silicon Valley 2022. 2. 6. 17:49
728x90

본 포스팅은 인프런 스프링 핵심 원리 기본편 강의를 보고 정리한 내용입니다.

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

새로운 할인 정책 개발

새로운 할인 정책을 할인 정책 인터페이스를 implements해서 구현했습니다. 

 

새로운 할인 정책 적용과 문제점 

새로운 할인 정책을 생성하고 변경하면서 문제가 하나 생겼습니다. 

바로 OrderServiceImpl에서 어떤 DiscountPolicy "구현 객체"를 사용할지 변경해야 했습니다. 

이렇게 되면 OCP(개방-폐쇄 원칙을) 준수 하지 않게 됩니다. 

 

추상에만 의존을 하지 않고 구현 에 의존했기 때문에 생기는 문제입니다. 

그렇다면 어떻게 해결할 수 있을까요? 

바로 추상에만 의존하고 객체의 생성은 다른곳에서 "주입"해주는 것 입니다. 

 

관심사의 분리

AppConfig 클래스를 만들어 주어서 memberService나 orderService에서 어떤 구현 객체를 사용할지 직접 주입해주는 클래스를 만들었습니다. 

이에 따라 ordeserviceimpl은 오로지 추상에만 의존할 수 있고 구현객체에 대한 의존이 사라집니다. 

Appconfig라는 지휘자를 두어서 각 클래스들의 의존관계를 주입해주는 방식입니다.