IoC/DI - 제어의 역전/의존성 주입
운전자가 자동차를 생산한다.
자동차는 내부적으로 타이어를 생산한다.
new Car();
Car 객체 생성자에서 new Tire();
- 의존성 정의 - 의존성은 new이다.
new를 실행하는 Car와 Tire 사이에서 Car가 Tire에 의존한다.
→ 전체가 부분에 의존한다.
스프링 없이 의존성 주입
생성자를 통한 의존성 주입
운전자가 타이어를 생산한다.
운전자가 자동차를 생산하면서 타이어를 장착한다.
Tire tire = new KoreaTire();
Car car = new Car(tire);
- 주입이란?
주입이란 말은 '외부에서'라는 뜻을 내포하고 있는 단어다.
→ 자동차 내부에서 타이어를 생산하는 것이 아니라 외부에서 생산된 타이어를 자동차에 장착하는 작업이 주입이다.
속성을 통한 의존성 주입
운전자가 타이어를 생산한다.
운전자가 자동차를 생산한다.
운전자가 자동차에 타이어를 장착한다.
Tire tire = new KoreaTire();
Car car = new Car();
car.setTire(tire);
스프링을 통한 의존성 주입
XML 파일 사용
운전자가 종합 쇼핑몰에서 타이어를 구매한다.
운전자가 종합 쇼핑몰에서 자동차를 구매한다.
운전자가 자동차에 타이어를 장착힌다.
ApplicationContext context = new ClassPathXmlApplicationContext("expert002.xml", Driver.class);
Tire tire = (Tire)context.getBean("tire");
Car car = (Car)context.getBean("tire");
car.setTire(tire);
@Autowired
@Resource