[Spring] 스프링 핵심 원리 - 기본편 (3) 객체 지향 원리 적용



섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

강의 내용 : 지난 강의에서 구현한 주문 도메인에 스프링 적용


IoC, DI, 컨테이너

IoC (제어의 역전, Inversion Of Control)

  • AppConfig 에서 프로그램에 대한 제어 흐름 권한을 모두 갖고 있음
  • 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전이라 함


DI (의존관계 주입, Dependency Injection)

  • 인터페이스에만 의존하도록 설계해서, 실제로 어떤 클래스로 생성될지 모른다.
  • 의존관계는 정적인 클래스 의존 관계와 실행 시점에 결정되는 동적인 객체 의존 관계 둘을 분리해서 생각해야 한다.
    • 정적인 클래스 의존 관계 -> import 코드만 보고 의존관계 판단 가능
    • 동적인 객체 의존 관계 -> 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계
  • 의존 관계 주입 : 실행 시점에 외부에서 구현 객체를 생성해 클라이언트에 전달하는 것
    • 의존 관계 주입을 사용하면 동적인 객체 의존 관계를 쉽게 변경할 수 있다.


IoC 컨테이너, DI 컨테이너

  • AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 연결해주는 것
  • 어셈블러, 오브젝트 팩토리 등으로도 불림…



스프링으로 전환하기

스프링 컨테이너

  • ApplicationContext : 스프링 컨테이너
  • @Configuration 어노테이션을 붙여서 설정 정보로 사용 가능
  • @Bean 어노테이션을 붙여서 스프링 컨테이너로 등록 (등록된 객체를 스프링 빈이라고 함)
  • applicationContext.getBean() 메소드를 사용하여 스프링 빈을 찾을 수 있음
  • 기존 : 개발자가 직접 다 설정해줬다면, 스프링 컨테이너에 객체를 빈으로 등록하고 스프링 컨테이너에서 빈을 찾아서 사용하도록 변경되었다.

다음 시간 : 스프링 컨테이너 사용의 장점….

다른 글