스프링 5강 - DI 의존 관계와 DI의 장점
November 07, 2018
5-1 의존 관계
- (코드참고) StudentInfo 객체는 Student객체에 의존 하고 있다.
- 의존성을 주입하는 방법 두가지
- XML파일 이용
- JAVA annotation 이용
- StudentInfo에서 의존받은 객체를 받는 방법
- 생성자(파라미터) 이용
- 생성자를 이용할 때는 xml파일에
<constructor-arg>
를 이용한다
- 생성자를 이용할 때는 xml파일에
- 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>
참고자료
- 스프링과정5강블스(김명호 강사)