데이터 바인딩 추상화 - 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
댓글
댓글 쓰기