파라미터의 수집은 다른 용어로 binding(바인딩) 이라고 한다.
대부분 데이터타입은 자동으로 스프링이 변환해서 처리해주지만
경우에 따라서는 파라미터를 직접 변환해주어야 할때가 있다.
예를 들어 문자열로 '2020-06-23' 이라고 전달되었을 때 얘를 Date타입으로 변환하는 작업이 있겠다.
package com.minsung.domain;
import java.util.Date;
import lombok.Data;
@Data
public class TodoDTO {
private String title;
private Date dueDate;
}
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(dateFormat, false));
}
@GetMapping("/ex03")
public String ex03(TodoDTO todo) {
log.info("todo : " + todo);
return "1";
}
파라미터로 사용되는 인스턴스 변수에 이 어노테이션을 적용해도 변환이 가능.
package com.minsung.domain;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Data;
@Data
public class TodoDTO {
private String title;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date dueDate;
}
@InitBinder 나 @DateTimeFormat 둘중 하나만 선택해서 사용하면 된다.
변환할 곳이 많다면 전자가 더 편리할듯