[Spring] 데이터 변환하기

oliveYeong·2022년 9월 28일

1. propertyEditer

  • 양방형 타입 변환, 특정 타입이나 이름의 필드에 적용이 가능하다.
  • 필드에 이름을 지정해주면, 그 이름인 정보에만 사용이 가능하다.
  • 디폴트 프로퍼티 : 스프링이 기본적으로 제공해주는 프로퍼티.
    커스텀 프로퍼티 : 사용자가 직접 구현. propertyEditorSupport를 상속하면 편리하다.
  • 모든 컨트롤러 내에서의 변환 : WebBinderInitializer를 구현 후 등록
    특정 컨트롤러 내에서의 변환 : 컨트롤러에 @initBinder가 붙은 메서드를 작성
    디폴트 property
    ↑이곳에서 기본 프로퍼티들을 확인해볼 수 있습니다.

2. Converter

  • 단방향 타입 변환 (타입A → 타입B)
  • property Editor의 단점을 개선하기 위한 것
  • 인스턴스 변수를 사용하지 않는다. (싱글톤으로 사용 가능)
  • conversionService : 여러 Converter를 등록 가능
  • 모든 컨트롤러 내에서의 변환 : ConfigurableWebBiningInitializer를 설정해서 사용
    특정 컨트롤러 내에서의 변환 : 컨트롤러에 @InitBinder가 붙은 메서드를 작성

3. Formatter

  • 양방형 타입 변환
  • 바인딩할 필드에 적용한다.
  • @NumberFormat, @DateFormat

<실습>

  1. Controller에서 save메서드에 Bindingresult 객체를 설정해줍니다.


  2. 그 위에 InitBinder 애노테이션을 설정해주고, 원하는 Date형식을 SimpleDateFormat으로 정해줍니다. 이러면 기본형식인 yyyy/mm/dd로 입력을 하지 않아도 데이터를 인식하고 출력을 해줍니다.


  3. 객체의 종류에 따라 설정을 달리할 수 있는데, 2번째 binder줄은 String[]객체를 #으로 나눠, 한 개의 요소가 아니라 리스트에 각각의 요소로 넣을 수가 있습니다.


<풀지 못한 오류>


sts의 디폴트 인코팅을 UTF-8로 업데이트를 하고, text파일을 저장하려고 했는데

에러 메시지가 뜨며 저장이 안되고 있다ㅜㅜ restart를 하니 한글도 갑자기 다 깨져버렸는데, 어떻게 해야될지 찾아봐도 안 나오는 상황이다ㅜㅜ
반응이 느린건지 내일 다시 시도를 해봐야겠다.

profile
[올리 공부기록] 한계단씩 꾸준히 성장하기

0개의 댓글