ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022_07_20 IoC가 무엇인가요?
    태투'S/SIL 2022. 7. 20. 01:22

    Answer :

    인스턴스 (객체)의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 하는게 아닌 스프링(컨테이너)가 대신 해주는 것

     

    1. IoC(Inversion of Control - 제어 반전)

    객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.

     

    1-1. IoC의 장점 

    객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드의 중복, 유지보수를 편하게 할 수 있게 한다.

     

    2. IoC 컨테이너

    스프링 프레임워크는 객체에 대한 생명 및 생명주기를 관리할 수 있는 기능을 제공 - IoC 컨테이너가 해당 기능을 제공

     

    2-1. 객체 생성 과정

    정리 :

    스프링이 모든 의존성 객체를 스프링이 실행될 때 만들어주고 필요한 곳에 주입시켜줌으로써 Bean 들은 싱글톤 패턴의 특징을 가지며, 제어의 흐름을 사용자가 컨트롤하는 것이 나니 스프링이 제어함

    객체관리 주체가 프레임워크(스프링)가 되기 때문에 개발자는 로직에만 집중할 수 이있는 장점

     

    IoC 컨테이너의 장점

    • IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
    • POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
    • 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.
    • 개발자는 비즈니스 로직에 집중할 수 있다.
    • 객체 생성 코드가 없으므로 TDD가 용이하다.

    3. IoC 분류

    DL(Dependency Lookup) / DI(Dependency Injection)

     

    DI - ‘의존성 주입’

    각 클래스간의 의존관계를 빈 설정(Bean Definition)정보를 바탕으로 외부(컨테이너)가 자동으로 연결해 주는 것

     

    정리 :

    일반적으로 Bean 설정 파일을 바탕으로 의존관계를 확인하여 주입한다. 이는 객체 레퍼런스를 외부(컨테이너)로 부터 주입받아서, 실행 시에 동적으로 의존관계가 형성되는 것이다. 따라서 컨테이너가 흐름에 주체가 되어 애플리케이션 코드에 의존 관계를 주입하게 되는 것이다.

     

    → DL 사용시 컨테이너 종속이 증가하기 때문에 주로 DI를 사용함

    댓글

Designed by Tistory.