ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Type Converter (타입 형변환)
    백엔드/SPRING MVC 2024. 10. 8. 15:46
    spring type converter..

     

    타입 변환 필요 예시

    • 스프링 MVC 요청 파라미터
      • @RequestParam
      • @ModelAttribute
      • @PathVariable
    • @Value 등으로 YML 정보 읽기
    • XML에 넣은 스프링 빈 정보 변환
    • View를 렌더링할 때

     

    Converter Interface

    public interface Converter<S, T> {
        @Nullable
        T convert(S source);
    }
    • S -> T 로 변환
    • 원하는 타입에 맞추어서 변환 가능
    // Member.class
    
    @Getter
    @AllArgsConstructor
    public class Member{
        private String memberName;
        private Integer memberNum;
    }
    
    // StringToMemberConverter.class
    public class StringToMemberConverter implements Converter<String, Member>{
        
        @Override
        public Member converter(String source){
            // Spring:10
            String[] split = source.split(":");
            String name = split[0]
            Integer num = Integer.parseInt(split[1]);
            
            return new Member(name, num);
        }
    }
    
    // MemberToStringConverter.class
    public class StringToMemberConverter implements Converter<Member, String>{
        
        @Override
        public String converter(Member source){
            // Spring:10
            return source.getMemberName() + ":" + source.getMemberNum();
        }
    }

     

    • Conversion Service를 이용한 테스트
      • DefaultConverSionService 는 .addConverter로 등록이 가능하게 해줌
      • 또한, 사용자의 입장에서 구체적인 구현 요소를 몰라도 됨 (ISP 원칙 준수)
    public class ConversionServiceTest {
        
        @Test
        void conversionService() {
            DefaultConversionService conversionService = new DefaultConversionService();
            
            conversionService.addConverter(new StringToMemberConverter());
            conversionService.addConverter(new MemberToStringConverter());
        }
        
        Member member = conversionService.convert("Spring:10",Member.class);
        
        Assertions.assertThat(member).isEqualTo(new Member("Spring",10));
        
    }

     

    Conversion Service (Converter 등록)

    • Converter를 만든 것을 Conversion을 이용해서 등록하고 손쉽게 사용할 수 있도록 하는 서비스
    • @Configuration을 이용해서 등록
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
         
         @Override
         public void addFormatters(FormatterRegistry registry) {
             
             registry.addConverter(new StringToMemberConverter());
             registry.addConverter(new MemberToStringConverter());
         
         }
    }

     

     

    '백엔드 > SPRING MVC' 카테고리의 다른 글

    파일 업로드  (1) 2024.10.08
    Formatter (포맷터)  (0) 2024.10.08
    예외처리 (API)  (0) 2024.10.07
    예외처리 (web page)  (0) 2024.10.07
    Spring Intercept  (0) 2024.10.07
Designed by Tistory.