본문 바로가기

SpringFramework Core - I. IoC 컨테이너/4. 의존성

4.2.8. 엄격한 타입의 collection

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-collection-elements-strongly-typed

 

 

자바5에서 지네릭 타입이 소개됨에 따라, 엄격한 타입의 컬렉션을 사용할 수 있게 되었다. 즉, String 요소들만을 포함하는 컬렉션 타입을 선언할 수 있게 되었다. 만약 bean에 엄격한 타입의 컬렉션을 의존성으로 주입하기 위해 스프링을 사용한다면, 스프링의 타입 변환 지원을 통해 도움을 얻을 수 있다. 스프링의 타입 변환은, 엄격한 타입의 컬렉션 인스턴스가 가진 요소들이 컬렉션에 추가되기 전에 적절한 타입으로 변경시켜준다. 다음 자바 클래스와 bean 정의는 그 방법을 보여준다.

public class SomeClass {

    private Map<String, Float> accounts;
    
    public void setAccounts(Map<String, Float> accounts) {
        this.accounts = accounts;
    }
}
<beans>
    <bean id="something" class="x.y.SomeClass">
        <property name="accounts">
            <map>
                <entry key="one" value="9.99" />
                <entry key="two" value="2.75" />
                <entry key="six" value="3.99" />
            </map>
        </property>
    </bean>
</beans>

something이라는 bean의 accounts 프로퍼티들이 주입될 준비가 끝나면, Map<String, Float>라는 엄격한 타입에 대한 지네릭 정보들이 반영과정에 사용된다. 그래서 스프링의 타입 변환 인프라는 Float 타입이 될 수 있는 다양한 값들을 인식한 후 9.99, 2.75, 3.99와 같은 문자열 값들을 실제 Float 타입의 값들로 변환시켜준다.