본문 바로가기

자바/스프링

IoC(Inversion of Controll) - 제어의 역전

IoC(Inversion of Controll) - 제어의 역전

 - 인스턴스의 생성부터 소멸까지의 생명주기를 스프링 IoC 컨테이너에서 해줌

 - 스프링 IoC 컨테이너는 객체의 생성을 책임지고 의존성을 관리함


IoC 구현 방법

1. DL(Dependency Lookup) - 의존성 검색

 - 빈에 접근 하기 위해 개발자가 사용 시점에 검색 해서 가져옴

2. DI(Dependency Injection) - 의존성 주입

 - 객체 생성 시점에 필요한 빈을 컨테이너에서 주입해 주는 것 (setter injection, constructor injection, method injection)


클래스 호출 방식

일반적인 클래스 호출

클래스 내에 선언과 구현이 같이 있어서 다양한 형태로 변화가 불가능


인터페이스를 이용한 클래스 호출

인터페이스와 구현 클래스를 분리

구현 클래스 교체가 용이해서 다양한 형태로 변화가 가능

구현 클래스 교체 시 호출 클래스 코드 수정이 필요할 수 있음


팩토리를 이용한 클래스 호출

팩토리가 구현 클래스를 생성

구현 클래스 변경 시 호출 클래스에 영향을 미치지 않고 팩토리만 수정 하면 됨

호출 클래스에 팩토리를 호출하는 코드가 들어가야 하므로 팩토리에 의존적임


IoC를 이용한 클래스 호출

팩토리의 장점 + 어떠한 것에도 의존하지 않음

실행 시점에 클래스간의 관계가 형성 됨

의존성 삽입을 의미하는 DI(Dependency Injection)로 표현 됨

 

Ioc 용어

 - bean : 스프링에서 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트

 - bean factory : 스프링 IoC를 담당하는 핵심 컨테이너

 - application context : bean factory를 확장한 IoC 컨테이너

 - configuration metadata : application context 혹은 bean factory가 IoC를 적용하기 위해 사용하는 메타 정보

 - container(IoC container) : IoC 방식으로 bean을 관리한다는 의미에서 application context나 bean factory를 가리킴


[참조]

https://jongmin92.github.io/2018/02/11/Spring/spring-ioc-di/

https://isstory83.tistory.com/91

'자바 > 스프링' 카테고리의 다른 글

Spring Bean Scope  (0) 2019.04.04
Spring AOP  (0) 2019.04.01
Spring Transaction  (0) 2019.03.15
DispatcherServlet  (0) 2019.02.11
Spring Bean 설정(XML)  (0) 2016.06.09