Spring Web 환경에서는 기존 Servlet을 이용했을 때의 상황과는 달리, Java의 reflection 기법을 이용하여 parameter 들을 POJO 기반의 Class로 setter 주입을 하여 제공을 하게 된다.

 기본 자료형 변수들이 setter 될때 Type이 일치 하지 않는 경우, 예외가 발생하게 된다. 이런 상황을 방지하기 위하여 initBinder라는 애노테이션을 이용하게 된다.

 

 @InitBinder
public void initBinder(WebDataBinder binder) throws Exception {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy. MM. dd.");

    binder.registerCustomEditor(Date.class, new CustomDateEditor(simpleDateFormat, true));
}

 

Controller 코드 중 일부 이다. Spring은 initBinder라는 애노테이션을 제공 한다. POJO 객체로 setter 하기 전에 해당 애노테이션이 있는 경우 참고를 하게 된다. 위 샘플 코드는 Date Type이 불일치 하는경우를 해결하기 위하여 작성 되었다.

 Spring의 Web parameter 제공은 좋은 기술이지만, 단점으로 Type 불일치가 존재 한다. 앞으로 이런 상황이 발생할 경우 위의 애노테이션을 활용 하자.

+ Recent posts