데이터의 변환 인터페이스


PropertyEditor => 양방향 타입 변환(String → 타입, 타입 → String). 특정 타입이나 이름의 필드에 적용 가능.

 

※ 디폴트 PropertyEditor - 스프링이 기본적으로 제공

    커스텀 PropertyEditor - 사용자가 직접 구현. PropertyEditorSupport 클래스를 상속받아 필요한 메서드를 오버라이딩 하면 편리함.

 

 

Converter => 단방향 타입 변환(타입 A → 타입 B). PropertyEditor의 단점 개선(stateful → stateless)

 

ConversionService => 타입 변환 서비스 제공. 여러 Converter를 등록 가능

 

Formatter => 양방향 타입 변환(String → 타입, 타입 → String). 바인딩 할 필드에 적용(@NumberFormat, @DateTimeFormat)

 

 

우선 순위는 다음과 같다.

 

1. 커스텀 PropertyEditor

2. ConversionService

3. 디폴트 PropertyEditor

 

 

 

데이터의 검증 인터페이스


Validator => 객체를 검증하기 위한 인터페이스. 

                    boolean supports() - 검증 가능한 객체인지 알려주는 메서드

                    ㆍvoid validate(Object target, Errors errors) - target은 검증 할 객체이고, errors는 검증 시 발생한 에러저장소를 의미.

 

방식은 수동 검증과 자동 검증으로 나뉘게 되고, 이때 자동 검증의 경우 @InitBinder를 이용한다. @InitBinder는 특정 컨트롤러 내에서만 동작한다. 만약 하나의 Validator로 여러 객체를 검증하고 싶을 때에는 글로벌 Validator로 등록해야 한다. servlet-context.xml에 빈(bean)으로 등록하고 그 빈을 validator 속성으로 지정해준다.

 

 

 

MessageSource => 다양한 리소스(파일, 배열 등)에서 메시지를 읽기 위한 인터페이스. servlet-context.xml에 프로퍼티 파일을 메시지 소스로 하는 ResourceBundleMessageSource를 빈으로 등록한다.

 

 

+ Recent posts