-
스프링의 등장 - 순수 자바 코드에서 스프링까지 3 , IoC(제어의 역전)와 Di 그리고 등장하는 스프링Spring/Spring 2022. 1. 16. 23:40728x90반응형
IoC(Inversion of Control) - 제어의 역전
기존 프로그램은 클라이언트 구현 객체가 서버 구현 객체를 생성, 연결, 실행하여 스스로 제어 흐름을 조종했지만 AppConfig를 이용하여 구현 객체는 실행만 담당하게 되었다. 즉, 클라이언트 구현 객체는 실행만 담당하고, 프로그램의 제어 흐름을 AppConfig가 가져오게되었다.
클라이언트 구현 객체들은 어떤 구현 객체를 갖는지 신경을 안쓰게 되고 자신의 로직만 실행하게 되었다. 이렇듯 프로그램의 제어 흐름을 직접 제어하는 것이 아닌 외부에서 관리하는 것을 제어의 역전(IoC)라 한다.
DI(Dependency Injection) - 의존관계 주입 DI
정적인 의존 관계
정적인 의존관계는 애플리케이션을 실행하지 않아도 분석할 수 있다. 즉, 사용 영역의 클래스들이 어떤 인터페이스와 클래스들을 의존하는지 알 수 있는 것들을 말한다. 우리가 앞에서 살펴본 코드로 예시를 들면 OrderServiceImpl은 MemberRepository와 DiscountPolicy 인터페이스들을 의존한다는 것을 알 수 있다.
동적인 의존 관계
동적인 의존 관계는 애플리케이션 실행 시점에 실제 생성된 객체 인스턴의 참조가 연결된 의존 관계이다.
이러한 의존 관계 주입을 잘 활용하면 클라이언트 코드를 변경하지 않고,
클라이언트가 원하는 타입의 객체로 변경할 수 있다.스프링의 등장
좋은 객체 지향 설계를 하기위해 우리가 지금까지 해왔던 작업들을 적용하여 독립된 컨테이너를 담당하는 IoC 컨테이너를 가진 스프링이 등장하였다.
기존의 개발자들은 직접 객체를 생성, 연결하는 AppConfig를 만들어서 사용해왔지만 스프링의 등장으로 스프링 컨테이너를 이용하여 객체를 생성, 연결, 제거 등의 작업을 할 수 있게되었다. ApplicationContext를 스프링 컨테이너라하며 @Configuration이 붙은 클래스를 설정(구성) 정보로 사용한다. 설정 클래스(AppConfig)안에 @Bean이 붙은 메서드들은 모두 스프링 컨테이너에 등록되며 등록된 객체들을 스프링 Bean이라 한다.
728x90반응형'Spring > Spring' 카테고리의 다른 글
Spring - 싱글톤 컨테이너 (0) 2022.01.23 Spring - 스프링 컨테이너(Spring Container)와 종류, 그리고 Bean 조회 방법 (0) 2022.01.18 스프링의 등장 - 순수 자바 코드에서 스프링까지 2 (0) 2022.01.16 스프링의 등장 - 순수 자바 코드에서 스프링까지 1 (0) 2022.01.15 SOLID - SRP, OCP, LSP, ISP, DIP (0) 2022.01.14