Object ⇒ 실체화가 가능한 것
Instance ⇒ 실체화 된 것
ex) 가구(추상적) ⇒ 의자, 침대 (Object) ⇒ 세상에 생겼을 때 Instance 가 되는 것
1) 제어의 역전(Inversion of Control, IoC)
- 프로그램의 제어 흐름 구조가 바뀌는 것
- 일반적인 프로그램 흐름 구조 : 사용하는 쪽(개발자)에서 메서드(라이브러리) 호출
- 역전된 프로그램 흐름 구조 : 기반이 되는 쪽(프레임워크)에서 사용하는 쪽의 메서드 호출
- 즉, 어떠한 일을 하도록 프레임워크에 제어의 권한을 넘김으로써 개발자가 신경써야 할 것을 줄이는 전략
- 프레임워크에 정의된 인터페이스, 추상타입을 개발자가 구현함으로써 객체를 프레임워크에 주입함(Dependency Injection, DI)
2) DI(Dependency Injection)
- 의존성 주입
- 클래스 사이의 의존 관계를 빈(Bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
DI가 적용 안된 예 (개발자가 직업 인스턴스를 생성)
class 엔진 {
}
class 자동차 {
엔진 v5 = new 엔진();
}
Spring에서 DI가 적용 된 예 (컨테이너가 v5 변수에 인스턴스를 할당해줌)
@Component
class 엔진 {
}
@Component
class 자동차 {
@Autowired
엔진 v5;
}
