[ IoC(Inversion of control) ]

  • 제어의 역전
  • 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전이라고 한다.
  • 클라이언트 클래스가 직접 구현체를 컨트롤하는 것이 아닌 외부의 Config클래스를 통해 구현체를 받고 클라이언트 클래스는 실행에만 신경을 쓰는 것을 의미한다.

[ DI(Dependency Injection) ]

  • 의존관계 주입
  • 정적인 클래스 의존관계와, 실행 시점에 결정되는 동적인 인스턴스 의존관계 둘을 분리해서 생각해야 됨
  • 정적인 클래스 의존관계를 보면 import코드만 보고 의존 관계를 쉽게 판단할 수 있다.(실행하지 않아도 파악이 가능함)
  • 동적인 인스턴스 의존관계는 애플리케이션 실행시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존관계
    • 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전당 해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라고 함
    • 클라이언트 코드를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다.
    • 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스를 쉽게 변경할 수 있다.

[ 컨테이너(IoC & DI Container) ]

  • 객체를 생성하고 관리하면서 의존관계를 연결해주는 것을 Container라고 한다.
  • 의존관계 주입에 초점을 맞추어 최는 에는 주로 DI컨테이너라고 함
  • 또는 어셈블러, 오브젝트 팩토리 등으로 불리기도 함

 

[ 스프링 컨테이너 ]

  • ApplicationContext를 스프링 컨테이너라고 한다.
  • @Configuration 이 붙은 class를 설정 정보로 사용하며, 클래스 안에 @Bean이라고 적힌 모든 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록하며, 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다.
  • 등록된 빈을 applicationContext.getBean()메서드를 통해 가져올 수 있다.
  • 관례상 @Bean이 붙은 메서드의 명을 스프링 빈의 이름 그대로 사용한다.

'Back-end > Spring' 카테고리의 다른 글

스프링이란?  (0) 2022.02.04
File Download  (0) 2021.11.05

+ Recent posts