7. 생성자 DI

6418 단어 SpringSpring

생성자 DI


앞에서 DI명세서를 작성할 때 bean태그 안에 property를 이용해서 작성해주었습니다. 그리고 이 경우 미리 작성해둔 set 함수가 실행되서 DI가 이루어집니다. 하지만 이렇게 set 함수만 사용할 수 있는 것은 아닙니다. DI명세서를 이용해서 생성자 DI를 할 수도 있습니다.

<bean id="exam" class="spring.di.entity.OhExam">
	<!-- setter가 아닌 생성자로 초기화 -->
	<constructor-arg index="0" value="10" />
	<constructor-arg index="1" value="20" />
	<constructor-arg index="2" value="30" />
	<constructor-arg index="3" value="40" />
</bean>

이 경우 미리 오버로딩한 생성자인 아래 생성자가 실행됩니다.

public OhExam(int korean, int english, int math, int computer) {
	this.korean = korean;
	this.english = english;
	this.math = math;
	this.computer = computer;
}

index는 말 그대로 인자의 index, 즉 순서를 의미합니다. 이 예제에서는 0번은 korean, 1번은 english, 2번은 math, 3번은 computer가 됩니다.(name을 이용해서 각 프로퍼티의 이름으로 구분해줄수도 있습니다. 추가적으로 type을 이용해서 자료형도 구분해줄수도 있습니다.) 이것을 toString을 이용해서 출력할경우 아래와 같은 결과를 볼 수 있습니다.

OhExam [korean=10, english=20, math=30, computer=40]

이때 p라는 네임스페이스(태그 이름을 식별하기위해 사용(각 태그가 원래 자신을 처리하는 처리기에서 처리될 수 있도록!))를 이용해서 더욱 간략하게 사용할 수 있습니다.

xmlns:p="http://www.springframework.org/schema/p"

<bean id="exam" class="spring.di.entity.OhExam" p:korean="10" p:english="10" />

OhExam [korean=10, english=10, math=0, computer=0]

좋은 웹페이지 즐겨찾기