Java와 Spring의 철학 — 읽기 자료
전 차시에서 우리는 new 직접 생성이 만드는 강한 결합을 직접 경험했습니다. 부품 교체가 어려운 이유는 — 클래스가 자기 객체를 자기가 만들기 때문입니다.
"내가 직접 만든다" → "누가 만들어준다". 누가? 외부의 누군가가요.
객체의 생성·관리 권한을 개발자에서 외부 컨테이너로 넘기는 설계 원칙. 제어권이 뒤집혔다고 해서 「Inversion of Control = 역전」.
| 기존 방식 | IoC 방식 |
|---|---|
| 내가 운전자 핸들을 잡고 직접 운전 길 막히면 내가 새 길 찾기 = 객체를 직접 new |
나는 뒷좌석 손님 목적지만 말함 택시(컨테이너) 가 알아서 운전 = 컨테이너가 객체 관리 |
class OrderService {
private MailSender mail = new GmailSender();
// 내가 직접 만들고 관리
}
class OrderService {
private MailSender mail;
// 받기만 한다 — 만드는 건 컨테이너가
}
new 가 사라졌습니다. 「누가 객체를 만들어주는지」를 클래스 안에서는 모릅니다. 이게 IoC 의 핵심 — 제어권을 위임한다는 것입니다.
Spring 컨테이너가 합니다. 애플리케이션 시작 시:
@Component, @Service 등) 발견이 컨테이너가 관리하는 객체를 Bean 이라 부릅니다. 다음 차시에서 실제 코드로.
new 가 사라지고 본질적 로직만 남음강한 결합의 답답함을 체감했다.
「제어권을 외부 컨테이너에 위임」하면 풀린다는 발상을 안다.