Web Programming/SPRING

[SPRING] 3-2. 타입변환

JEONGGI 2021. 10. 8. 14:53

타입변환에 대하여 알아보겠습니다. 먼저 자바와 ORACLE 에서의 타입변환의 예제입니다. xml 자체에는 타입의 표기법없이 형변환을 알아서 합니다. 객체의 필드(속성)에 값을 주입시 xml에서는 문자열과 숫자 구분이 되지 않지만 해당 필드의 타입을 보고 스프링 컨테이너가 적당한 형변환을 통해 값을 주입합니다. 단, 날짜에 대해서는 스프링 프레임워크에서 기본전략을 제공하지 않기 때문에 개발자가 별도로 설정을 해줘야합니다.

타입변환은 bean 속성주입과 controller 메소드의 파라미터 바인딩에서 필요합니다. 

xmL은 물자열로 설정합니다 문자열이 클래스로 변환되고, collection(list, set) 으로 변환됩니다. 스프링에서 기본으로 전환되지 않는 타입은 문자열이 Date타입입니다. dateFormat 설정이 필요합니다.

Spring 타입변환에는 3가지가 있습니다. property editor를 통해 문자에서 타입변환을 할 수 있으며, conversion service를 이용해서 스프링 프레임워크를 이용한 변환을 할 수 있습니다. 또한 formatting conversion sercive를 가장 많이 사용하게 되는데요 주입하려는 필드에 포맷팅과 관련된 어노테이션을 설정하여 하는 방법이 있습니다.

먼저 첫번째인 propertyEditor 를 이용해서 문자열과 타입간의 변환을 하는 방법을 살펴보겠습니다. 타입을 개발자가 설정해야 하며 개발자가 직접만든 타입변환에 대한 설정을 해야한다.

propertyEditor는 spring 버전에 따라 방식이 다르기 때문에 살펴봐야합니다. 

타입변환을 설정한것을 커스텀에디터로 등록한것을 살펴보겠습니다.

ConversionService를 이용한 타입변환입니다. Converter를 구현하고 그것을 위한 xml을 설정하여 주겠습니다. DateStringConverter를 이용하여 타입을 변환할 수 있습니다.

그렇다면 propertyEditor와 ConversionService를 동시에 등록할 경우에는 어떻게 될까요? 두개를 등록하면 에러가 발생할까요? 어떤것이 적용되었는지 어떻게 알까요? bean의 선언순서가 영향을 미칠까요? 바로 정답은 propertyEditor가 먼저 적용되게 됩니다.

마지막으로 formatting conversion service 에 대해서 살펴보겠습니다. 똑같은 데이트 타입이여도 형식을 따로 지정할 수 있기 때문에 자유도가 증가합니다. 하지만 주입하려는 필드마다 설정을 해주어햐합니다. xml에 등록을 하여야합니다.