ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 생성자 DI
    프로그래밍 공부/Spring 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. 태그 이름을 식별하기 위해 사용

    댓글

Designed by Tistory.