티스토리 뷰

728x90
반응형

XML 파일의 <property> 및 <constructor-arg> 요소에서 스프링 <beans> 스키마에 정의된 <list>, <map>, <set>

의 요소를 사용하면 List, Map, Set의 형식의 속성과 생성자 인자를 설정할 수 있습니다.

 

Case 01 - Property Type

  • 첫번째 방법 - <value> 요소를 사용하여 key = value 형식으로 지정할 수 있습니다.
  • 두번째 방법 - <props> 요소를 사용하여 내부에 <prop> 요소의 key 특성과 value형식으로도 사용할 수 있습니다.
<bean id="dataTypes" class="com.spring.beans.DataTypesExample">
    <!-- Property Type -->
    <constructor-arg name="propertiesType">
        <value>
            x = y
            a = b
        </value>
    </constructor-arg>
    
    <!-- Property Type -->
    <constructor-arg name="anotherPropertiesType">
        <props>
            <prop key="book">Getting started with the Spring Framework</prop>
        </props>
    </constructor-arg>
</bean>

 

Case 02 - List Type

  • <list> 요소를 사용하여 값을 지정할 수 있습니다.
  • <list>의 특성 중 value-type을 사용하여 생성자 인자가 받는 요소의 형식을 지정할 수 있습니다.
  • value-type은 선택사항이며, value-type 특성을 지정하면 스프링 컨테이너는 등록된 속성 편집기를 사용해 값을 value-type 특성으로 지정된 형식으로 변환하며, 필요한 경우 매개변수화된 List 형식에서 허용되는 형식으로 다시 변환할 수 있습니다.
  • value-type 특성을 지정하지 않으면 스프링 컨테이너는 간단히 등록된 속성 편집기를 사용해 값을 매개변수화된 List 형식에서 허용되는 형식으로 변환합니다.
<bean id="dataTypes" class="com.spring.beans.DataTypesExample">
    <!-- List Type -->
    <constructor-arg name="listType">
        <list value-type="java.lang.Integer">
            <value>1</value>
            <value>2</value>
        </list>
    </constructor-arg>
    
    <constructor-arg name="anotherlistType">
        <list>
            <ref bean="aBean" />
            <ref bean="bBean" />
        </list>
    </constructor-arg>
</bean>

<bean id="aBean" class="example.ABean" />
<bean id="bBean" class="example.BBean" />

 

Case 03 - Map Type

  • <map> 요소를 사용하여 값을 지정할 수 있습니다.
  • 사용 방법은 아래 예제와 같으며 key-type, value-type 특성을 지정하여 허용하는 키와 값의 형식을 지정할 수 있습니다.
<bean id="dataTypes" class="com.spring.beans.DataTypesExample">
    <!-- Map Type -->
    <constructor-arg name="mapType">
        <map>
            <entry>
                <key><value>map key 1</value></key>
                <value>map key 1’s value</value>
            </entry>
        </map>
    </constructor-arg>
    
    <constructor-arg name="anotherMapTypeOne">
        <map>
            <entry key="1" value="map key 1’s value" />
        </map>
    </constructor-arg>
    
    <constructor-arg name="anotherMapTypeTwo">
        <map>
            <entry key="1">
                <list>
                    <value>문자열1</value>
                    <value>문자열2</value>
                    <value>문자열3</value>
                </list>
            <entry>
        </map>
    </constructor-arg>
    
    <constructor-arg name="anotherMapTypeTwo">
        <map>
            <entry>
                <key>
                    <ref bean="aBean" />
                </key>
                <ref bean="bBean" />
            <entry>
        </map>
    </constructor-arg>
</bean>

<bean id="aBean" class="example.ABean" />
<bean id="bBean" class="example.BBean" />

 

Case 04 - Set Type

  • <set> 요소를 사용하여 값을 지정할 수 있습니다.
  • value-type 특성에는 Set에 하용되는 형식을 지정할 수 있습니다.
<bean id="dataTypes" class="com.spring.beans.DataTypesExample">
    <!-- Set Type -->
    <constructor-arg name="setType">
        <set>
            <value>Element 1</value>
            <value>Element 2</value>
        </set>
    </constructor-arg>
</bean>
728x90
반응형