스프링의 주요한 특징인 DI와 IOC를 이해해보자.
IOC란?
스프링을 이용해서 코드를 만들었을 때, 객체 A 안에 객체 B 가 있다고 생각해보자.
- 만약, B의 생성자나 getter / setter가 바뀐다고 치자. 그럼 A의 코드도 바뀌어야겠네?
- 이런 관계가 한두번 엮인게 아니라면? 코드를 하나하나 수정하기 너무 불편할 것이다.
- 그래서 탄생한 것이 IOC (inversion of control = 제어의 역전)
- 스프링은 개발자가 객체를 만들고 지우지 않도록 해준다. 개발자는 필요한 코드만 잘 치면 된다.
스프링 컨테이너
그럼 스프링에서 객체는 어떻게 만들어지는 걸까?
- 객체를 만드는 공장을 스프링 컨테이너라고 부른다.
IoC를 코드로!
그러면, IoC를 어떻게 코드로 구현할 것인가?
여기에는 크게 두 가지 방법이 존재한다.
- DI (Dependency injection) : 의존성 주입
- 서비스 로케이터 (Service Locator)