데이터 바인딩 추상화 - propertyEditor

데이터 바인딩 추상화 - propertyEditor

데이터 바인딩

org.springframework.validation.DataBinder

java.beans.PropertyEditor

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/validation/DataBinder.html

WEB MVC에만 특화된 것이 아니라 여러 곳에서 쓰이는 스프링 핵심 기술

기술적인 관점

프로퍼티 값을 타겟 객체에 설정하는 기능

사용자 관점

사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능. 입력값은 대부분 "문자열"인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Book 같은 도메인 타입으로도 변환해서 넣어주는 기능.

PropertyEditor

public class EventEditor extends PropertyEditorSupport{ @Override public String getAsText() { Event event = (Event)getValue(); return event.getId().toString(); } @Override public void setAsText(String text) throws IllegalArgumentException { setValue(new Event(Integer.parseInt(text))); } }

스프링 3.0 이전까지 DataBinder 가 변환 작업 사용하던 인터페이스

getValue 는 PropertyEditorSupport 가 받은 객체를 가져올 수 있다.

getValue와 setValue는 객체를 공유 하고 있으며 PropertyEditor가 가지고 있는 값 이다.

서로 다른 쓰레드에 공유 를 한다.( 쓰레드-세이프 하지 않음 )

Bean 으로 등록해서 쓰지 말아야 한다. Object 와 String 간의 변환만 할 수 있어, 사용 범위가 제한적 임.

으로 등록해서 쓰지 말아야 한다.

@RestController public class EventController { @InitBinder public void init(WebDataBinder webDataBinder){ webDataBinder.registerCustomEditor(Event.class, new EventEditor()); } @GetMapping("/event/{event}") public String getEvent(@PathVariable Event event){ System.out.println(event); return event.getId().toString(); } }

from http://rlawls1991.tistory.com/55 by ccl(A) rewrite - 2020-03-25 12:54:25

댓글

이 블로그의 인기 게시물

[Linux] 파일 로그 보기(tail)

[샤니마스 SPRING PARTY2020] THE IDOLM @ STER SHINY COLORS SPRING...

2020 LCK 롤챔스 Spring 경기 재개 및 일정