소스코드 다운받기

5-1 의존 관계

  • (코드참고) StudentInfo 객체는 Student객체에 의존 하고 있다.
  • 의존성을 주입하는 방법 두가지
    • XML파일 이용
    • JAVA annotation 이용
  • StudentInfo에서 의존받은 객체를 받는 방법
    • 생성자(파라미터) 이용
      • 생성자를 이용할 때는 xml파일에 <constructor-arg>를 이용한다
    • setter() 이용 (지금까지는 setter를 이용해왔다)
      • <property> 이용

5-2 DI의 장점

  • 예제 5-2를 보면 pencil interface를 구현한 여러가지 굵기의 연필이 있다 (4B, 6B, 6B with eraser)
  • xml파일에서 어느 클래스에서 받을지 정하면
  • Main.java 파일을 건드릴 필요없이 부품을 쉽게 바꿀 수 있다
// Main.java
package com.javalec.ex;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX.xml");
		Pencil pencil = ctx.getBean("pencil", Pencil.class);
		pencil.use();
		ctx.close();
		
	}

}
<!-- applicationCTX.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- <bean id="pencil" class="com.javalec.ex.Pencil6BWithEraser" /> -->
	<!-- <bean id="pencil" class="com.javalec.ex.Pencil6B" /> -->
	<bean id="pencil" class="com.javalec.ex.Pencil4B" />
	
</beans>

참고자료