Content
-
Validation
-
data binding
- propertyEditor
- Converter
- Formatter
Validation
객체 검증용 인터페이스
validation 용 annotation 을 사용해서 객체들을 검증 할 수 있다.
Java EE 스펙 중 하나다
이미 스프링 부트에서는 LocalValidatorFactoryBean 이 자동으로 등록되어있어서
이미지 처럼 하이버네이트 밸리데이터를 사용할 수 있다.
data binding
사용자의 입력 값을 어플리케이션 모델에 동적으로 변환해 넣어주는 기능이라고 할 수 있다.
입력값은 거의 String 으로 들어오는데 이걸 객체에 맞게 int,long,boolean 또는 객체등으로 변환해서 넣어주는 기능들이다.
PropertyEditor
스프링 3.0 이전까지 데이터바인더가 변환 작업 할 때 사용하던 인터페이스
쓰레드 세이프 하지 않아서 빈으로 등록해서 쓰면 안된다.
고전적인 방식의 data binding 부터 봐보자
이런식으로 들어왔을때 pathVariable 에 숫자 1또는 2 가 들어왔을 경우
Event 로 변환 할 수가 없다.
PropertyEditorSupport 를 상속받아서
getAsText 와 setAsText 를 구현하면 되었다.
여기서 구현을 하면 되었는데 Integer.parseInt() ... 등으로
또 Object에서 String으로만 변환이 가능했는데..
너무 불편한 방식이다.
이런 불편 한 방식을 보완해서 나온게 Converter 와 Formatter다
그럼 이제 Spring 3.0 부터 들어온 Converter 와 Formatter를 봐보도록 하자
Converter
이제 모든 타입을 변환 할 수 있는 일반적인 변환기를 만들었다.
또, PropertyEditor 가 가지고 있던 상태를 가지고 있다는 단점(쓰레드 세이프 하지 않는)을
해소 시켜서 나왔다.
Converter 를 implements 로 구현하면 된다.
Formatter
PropertyEditor 에 대체제
문자열을 Locale 에 따라 다국화 하는 기능도 제공한다.
이런식으로 등록해서 사용하곤 한다.
스프링 부트에서는 Formatter 와 Converter 가 자동으로 등록 되기 때문에
registry.addFormatter 이런 설정을 할 필요 가 없다.
빈으로만 Formatter와 Converter를 등록 하면 된다.
JPA 에는 이미 Converter 가 들어있다.
팁-
ConversionService 를 찍어보면 들어있는 컨버터들을 확인 할 수 있다.
'Spring > Core' 카테고리의 다른 글
Spring Core - 프록시 AOP (0) | 2020.04.18 |
---|---|
Spring Core - AOP의 개념 (0) | 2020.04.18 |
Spring Core - Resource 추상화 (0) | 2020.04.18 |
Spring Core - Application Context 의 기능들 (0) | 2020.04.17 |
Spring Core - bean 의 스코프 (0) | 2020.04.16 |