SpringFramework Core - I. IoC 컨테이너/4. 의존성
4.2.8. 엄격한 타입의 collection
NoodleMan
2020. 3. 17. 18:00
자바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 타입의 값들로 변환시켜준다.