[Java와 Spring] IoC/DI - 제어의 역전/의존성 주입

개발log·2024년 4월 1일

자바와 스프링

목록 보기
6/10
post-thumbnail

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

profile
나의 개발 저장소

0개의 댓글