프로그래밍 공부/Spring
[Spring] 생성자 DI
valid_ming
2021. 4. 29. 23:39
뉴렉처 강사님의 동영상 강의를 정리한 글입니다.
xml에서 여러 field 값이 포함된 생성자를 통해 객체를 생성하는 법을 알아보자.
public NewlecExam(int kor, int eng, int math, int com) {
this.kor = kor;
this.eng = eng;
this.math = math;
this.com = com;
}
위와 같은 생성자를 포함한 class를 선언하는 방법
1. 기본
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg value= "10"/>
<constructor-arg value= "20"/>
<constructor-arg value= "30"/>
<constructor-arg value= "40"/>
</bean>
=> 어떤 field 값인지 알 수 없다.
2. index 이용
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg index="0" value= "10"/>
<constructor-arg index="3" value= "20"/>
<constructor-arg index="1" value= "30"/>
<constructor-arg index="2" value= "40"/>
</bean>
=> index를 이용하여 입력되는 value의 순서를 조정할 수 있다. 하지만 여전히 어떤 field 인지 구분이 어렵다.

3. name 이용
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg name="kor" value= "10"/>
<constructor-arg name="eng" value= "20"/>
<constructor-arg name="math" value= "30"/>
<constructor-arg name="com" value= "40"/>
</bean>
4. type 이용: 변수명은 같고 type이 다른 경우 사용
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg name="kor" type="float" value= "10"/>
<constructor-arg name="eng" type="int" value= "20"/>
<constructor-arg name="math" type="int" value= "30"/>
<constructor-arg name="com" type="float" value= "40"/>
</bean>
5. 단일 태그로 속성 설정하기
1) namespace 사용 설정

xml 파일의 Namespaces에서 p에 체크하여 설정을 추가한다.

2) p 값을 사용하여 속성 값을 지정한다.
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10" p:math="10" p:com="10"/>
p 값을 이용하면 이를 bean 태그가 가진 속성으로 이해하지 않고 처리기가 담당한 속성으로 인식한다.
namespace (접두사)
1. 태그가 특정한 처리기에 의해 처리되도록 사용
2. 태그 이름을 식별하기 위해 사용