코코아 Study_스프링 입문_IOC/DI#6

VANS·2022년 1월 2일
0

스터디

목록 보기
6/15

1. 기본

의사코드

운전자가 자동차를 생산한다.
자동차는 내부적으로 타이어를 생산한다.

자바표현

new Car();
Car 객체 생성자에서 new Tire();

의존성을 단순하게 정의

의존성은 new이다.
new를 실행하는 Car와 Tire 사이에서 Car가 Tire에 의존한다.


2. 생성자를 통한 의존성 주입(스프링 없이)

의사코드

운전자가 타이어를 생산한다.
운전자가 자동차를 생산하면서 타이어를 장착한다.

자바표현 - 생성자 인자 이용

Tire tire = new KoreaTire();
Car car = new Car(tire);

주입이란?

주입이란 말은 외부에서라는 뜻을 내포하고 있는 단어.
즉, 자동차 내부에서 타이어를 생산하는 것이 아니라
외부에서 생산된 타이어를 자동차에 장착하는 작업이 주입이다.

시퀀스 다이어그램

클래스 다이어그램


3. 속성을 통한 의존성 주입(스프링 없이)

의사코드

운전자가 타이어를 생산한다.
운전자가 자동차를 생산한다.
운전자가 자동차에 타이어를 장착한다.

자바표현 - 속성 접근자 메서드 사용

Tire tire = new KoreaTire();
Car car = new Car();
car.setTire(tire);

시퀀스 다이어그램

클래스 다이어그램

장점

생성자를 통해 의존성을 주입하는것보다 코드의 유연성이 좋다.


4. 스프링을 통한 의존성 주입(XML 파일 사용)

의사코드

운전자가 종합 쇼핑몰에서 타이어를 구매한다.
운전자가 종합 쇼핑몰에서 자동차를 구매한다.
운전자가 자동차에 타이어를 장착한다.

자바표현 - 속성 메서드 사용

ApplicationContext context = new ClassPathXmlApplicationContext("expert002.xml", Driver.class);
Tire tire = (Tire)context.getBean("tire");
Car car = (Car)context.getBean("car");

car.setTire(tire);

시퀀스 다이어그램

클래스 다이어그램

선긋기

장점

재컴파일 없이, xml파일만 수정하면 프로그램의 실행 결과를 바꿀 수 있다.


5. 스프링을 통한 의존성 주입(XML 파일에서 속성 주입)

의사코드

운전자가 종합쇼핑몰에서 자동차를 구매 요청한다.
종합 쇼핑몰은 자동차를 생산한다.
종합 쇼핑몰은 타이어를 생산한다.
종합 쇼핑몰은 자동차에 타이어를 장착한다.
종합 쇼핑몰은 운전자에게 자동차를 전달한다.

자바표현

ApplicationContext context = new ClassPathXmlApplicationContext("expert003/expert003.xml");
Car car = context.getBean("Car", Car.class);

XML로 표현

<bean id="koreaTire" class="expert003.KoreaTire"></bean>
<bean id="americaTire" class="expert003.americaTire"></bean>
<bean id="car" class="expert003.Car">
<
property name="tire" ref="koreaTire"></*bean>


6. 스프링을 통한 의존성 주입(@Autowired, @Resource를 통한 속성 주입)

의사코드

운전자가 종합쇼핑몰에서 자동차를 구매 요청한다.
종합 쇼핑몰은 자동차를 생산한다.
종합 쇼핑몰은 타이어를 생산한다.
종합 쇼핑몰은 자동차에 타이어를 장착한다.
종합 쇼핑몰은 운전자에게 자동차를 전달한다.


profile
코딩도 점진적 과부화

0개의 댓글