[Spring] @InitBinder

msriver·2020년 6월 23일
0

Spring

목록 보기
11/16

파라미터의 수집은 다른 용어로 binding(바인딩) 이라고 한다.

대부분 데이터타입은 자동으로 스프링이 변환해서 처리해주지만
경우에 따라서는 파라미터를 직접 변환해주어야 할때가 있다.

예를 들어 문자열로 '2020-06-23' 이라고 전달되었을 때 얘를 Date타입으로 변환하는 작업이 있겠다.

TodoDTO 작성

package com.minsung.domain;

import java.util.Date;

import lombok.Data;

@Data
public class TodoDTO {
	private String title;
	private Date dueDate;
}

@InitBinder 작성 (Controller에)

@InitBinder
public void initBinder(WebDataBinder binder) {
	SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
	binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(dateFormat, false));
}

테스트 메서드 (Controller)

@GetMapping("/ex03")
public String ex03(TodoDTO todo) {
	log.info("todo : " + todo);
	return "1";
}

@DateTimeFormat

파라미터로 사용되는 인스턴스 변수에 이 어노테이션을 적용해도 변환이 가능.

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 둘중 하나만 선택해서 사용하면 된다.
변환할 곳이 많다면 전자가 더 편리할듯

profile
NOBODY

0개의 댓글