본문 바로가기

스프링8

스프링 - 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.
스프링 - 스프링과 객체지향 설계 feat. 다형성, SOLID 들어가기에 앞서... 스프링과 객체지향 설계를 제대로 이해하기 위해서 필요한 2가지 다형성 객체지향 설계의 5가지 원칙 (SOLID) 1. 다형성 스프링의 핵심 스프링은 자바 기반의 프레임워크이다. 자바 언어의 가장 큰 특징은 객체 지향 언어라는 점이다. 스프링은 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다. 객체지향 특징 추상화 캡슐화 상속 다형성 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 또한 객체지향 프로그래밍은 프로그램을 유연하고 변경.. 2022. 4. 13.