Spring Ch 2. 추상화 - 데이터 바인딩 추상화(PropertyEditor, Converter, Formatter)


데이터 바인딩

  • Web Application을 개발할 수록 코드는 점점 복잡해지고 여러 스크립트의 객체와 화면으로 입력받는 데이터의 타입이 일치해지기 어려워진다.
  • 예를 들어, 웹에서 form 태그로 값을 입력받아 처리하고자 할 때 입력받는 값은 String이지만 실제 사용되는 데이터는 Date, Boolean 또는 정의된 클래스 객체의 타입으로 사용되며 이를 처리하는 코드를 작성해야한다.
  • 입력 받은 문자열을 객체에 맞는 데이터로 변환하는 작업을 간편하게 하기 위해 Spring에서는 데이터 바인딩 기능을 갖는 인터페이스를 추상화하여 제공하고 있다.

PropertyEditor

  • PropertyEditor는 Spring 3.0버전 전까지 사용되고 있던 데이터 바인딩 인터페이스이다.
  • Text-Object간의 변환을 수행할 수 있도록 getAsText, setAsText 메소드를 제공하고 있다.
  • 그러나 멀티 스레드로 동시에 접근이 이루어질경우 데이터가 변경되기 쉬워 싱글톤으로 사용할 수 없으며 controller에 등록해서 사용해야 한다.
자세히 보기

Spring Ch 2. 추상화 - Validation 추상화


Validation

  • 객체를 검증하기 위해 사용되는 인터페이스.
  • 웹, 서비스 등 모든 계층에 관계가 없어 일반적으로 사용할 수 있다는 장점이 있다.
  • Bean Validation의 Annotation으로 객체의 데이터를 검증할 수 있다.
  • Validator는 기본적으로 다음 두 함수를 오버라이드하여 검증해야한다.
    • boolean supports(class<?>) - 검증할 객체의 타입을 체크하는 함수.
    • void validate(Object, Errors) - 실제 검증이 이루어지는 함수.
자세히 보기

Spring Ch 2. 추상화 - ResourceLoader와 Resource 추상화


Resource 추상화

  • java는 java.net.URL이라는 URL 클래스로 리소스에 접근할 수 있다.
  • classPath 또는 ServletContext 기준 상대경로의 리소스(low-level Resource)에 접근하려면 핸들러를 등록하여 URL접미사를 만들어 사용해야 한다. 이는 코드만으로 리소스의 출처를 확인하기 불편하며 비효율적이고 불편하다.
  • Spring의 Resource 객체는 URL 클래스를 추상화하여 low-level 리소스에 접근할 수 있도록 기능을 제공하고 있다.
자세히 보기