IoC

Inversion of Control : 제어의 역전

 

 

정의 및 역할

 

IoC 컨테이너는 DI (의존관계 주입) 기능을 제공한다.

 

- DI : Dependency Injection

객체간 의존관계를 생성자/Setter로 명시해 객체 생성시 의존관계를 주입하는 방식을 따르는 디자인패턴이다.

 

 

IoC란 기존에 Java에서 객체를 생성하고 의존관계를 직접 주입했다면, 

스프링에서는 컨테이너가 객체를 생성하고 의존관계를 주입하는 일을 담당하기 때문에

제어의 주체가 (어플리케이션 > 컨테이너)로 역전된 것을 의미한다.

 

이때 스프링 컨테이너가 생성하고 관리하는 객체들을 Bean 이라고 부른다.

(자바에서의 Bean도 자바로 작성된 객체이다.)

 

 

 

컨테이너 동작방식 

 

IoC 컨테이너는 어플리케이션의 설정 메타데이터를 읽고 자바 리플렉션 API를 사용해 객체들과 의존관계를 인스턴스화 한다.

(참고 : docs.oracle.com/javase/tutorial/reflect/index.html)

 

 

- 메타데이터의 주요 엘리먼트

  • <bean> : 스프링 컨테이너가 관리하는 객체를 정의한다.
  • <constructor-arg> : Service 인스턴스를 Controller 생성자 인수로 전달한다.

 

설정 메타데이터의 제공방식은  (1) xml / (2) 자바 어노테이션 (@) / (3) 자바코드  가 있다.

 

 

 


Reference

책 : 배워서 바로쓰는 스프링 프레임워크 (한빛미디어)

반응형

+ Recent posts