본문 바로가기

스프링부트2

스프링 - IoC, DI, (IoC, DI) 컨테이너 제어의 역전 IoC(Inversion of Control) 기존 프로그램은 클라이언트 객체가 스스로 필요한 객체를 생성했다. 반면에 AppConfig 등장이후 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 반면 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. OrderServiceImpl 객체는 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. 어떤 구현 객체들이 실행될지 아무것도 모른체 OrderServiceImpl은 묵묵히 자신의 로직을 실행할 뿐이다. 이렇듯 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 의존관계 주입 DI(Dependency Injection) OrderServiceImpl 은 Disc.. 2022. 4. 14.
스프링 - 관심사의 분리 feat. DI, AppConfig, SOLID 애플리케이션을 하나의 공연이라 생각해보자. 각각의 인터페이스를 배역이라 생각하자. 그런데! 실제 배역 맞는 배우를 선택하는 것은 누가 하는가? 로미오와 줄리엣 공연을 하면 로미오 역할을 누가 할지 줄리엣 역할을 누가 할지는 배우들이 정하는게 아니다. 로미오 역할(인터페이스)을 하는 레오나르도 디카프리오(구현체)가 줄리엣 역할을 하는 여자 주인공(구현체)을 직접 초빙하는건 DIP원칙에서 벗어난다. public class OrderServiceImpl implements OrderService{ /*인터페이스*/ /*구현체*/ private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); ... } /* 로미오 역할을 디카프리오는 (OrderS.. 2022. 4. 14.