프로그래밍 공부/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. 태그 이름을 식별하기 위해 사용