본문 바로가기

Spring/Core

Spring Core - Validation, Data binding 추상화

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