IOC/DI

나찬웅·2024년 10월 28일

Spring

목록 보기
2/6

IOC(inversion Of control, 제어의 역전)

  • IOC란, 프로그램을 구동하는데 필요한 객체에 대한 생성, 변경 등의 관리를 프로그램을 개발하는 사람이 아닌 프로그램을 구동하는 컨테이너에서 직접 관리하는 것을 말함

  • 스프링은 IOC를 통해 구동 시 필요한 객체의 생성부터 생명 주기까지 해당 객체에 대한 관리를 직접 수행한다.

  • 개발자가 직접 객체를 생성할 수 있지만 해당 권한을 컨테이너에 맡김으로써 소스 코드 구현의 시간을 단축할 수 있다.


Bean(빈)

  • Spring에서 IOC를 이용해 직접 생성하고 생명 주기 제어를 담당하는 객체
    (개발자가 생성하고 관리하는 객체는 Instance)

IOC 관련 어노테이션

  • 특정 클래스에 IOC 관련 어노테이션을 작성
    -> Bean으로 등록되어 서버 실행 시 Spring Container에 의해 Bean(객체)으로 만들어짐

💡 서버 실행 시 Spring Container가 Component Scan(Bean Scanning) 을 수행하여

@Component, @Repository, @Service, @Controller 어노테이션이 붙은 클래스를 모두 찾아 Bean으로 등록(객체로 생성)

Spring Legacy Project는 <context:component-scan> 태그
Spring Boot Project는 @CompnentScan 어노테이션을 이용해 기능 수행


DI(Dependecy Injection, 의존성 주입)

  • DI란, IOC 구현의 핵심 기술로
    IOC를 통해 Spring이 생성하고 관리하는 Bean(객체)을
    필요한 곳에 주입하는 것
    (객체 생성을 개발자가 아닌 Spring에게 의존하고 생성된 객체를 개발자라 필요한 곳에 주입 하는 것)

  • 이렇게 의존석을 주입 받게 되면 이후 해당 객체를 수정해야 할 상황이 발생했을 때 소스 코드의 수정을 최소화 할 수 있음

  • 객체간의 종속 관계(결합도)를 약화 시킬 수 있음
    (결합도: 한 클래스에서 필드 객체를 생성할 때 발생하는 구 객체간의 관계, 각 객체간의 내용이 수정될 경우 영향을 미치는 정도! )

DI 관련 어노테이션

0개의 댓글