일기장
Published 2023. 5. 27. 20:03
데이터의 변환 웹개발

 사용자로부터 입력받은 데이터를 우리가 의도한 대로 사용하기 위해서는 적절한 변환이 필요하다. 특히 웹개발에서는 요청된 데이터를 메인모델에 맞게 변환하는 과정이 필수적이다. Spring에서는 WebDataBinder를 통해 사용자로부터 입력받은 데이터를 변환하고 검증할 수 있다.

 

 

  PropertyEditor을 이용한 변환 메서드

 

- PropertyEditor를 이용하여 데이터를 변환할 수 있다. 이는 양방향 타입 변환을 제공한다.

- 보통 컨트롤러내에 변환 메서드를 만들어 데이터를 변환시킨다.

@InitBinder
public void toDate(WebDataBinder binder) {
	SimpleDateFromat df = new SimpleDateFormat( [패턴] ); // 예: "yyyy-mm-dd"
	binder.registerCustomEditor(Date.class, new CustomDateEditor(df, false)); 
}

 

@InitBinder
public void toDate(WebDataBinder binder) {
	binder.registerCustomEditor(String[].class, [ 적용할 필드 ], new StringArrayPropertyEditor("-"));
	// 문자열을 String배열로 변환한다. "-"는 구분자이다.
}

 

 


 

 

 Converter

 

- Converter을 이용하여 데이터를 변환할 수 있다. 이는 단방향 타입 변환을 한다. 그렇기에 2개의 Converter을 이용하여 양방향 타입 변환을 구현할 수 있다.
- PropertyEditor가 가진 인스턴스 변수를 생성해야한다는 단점을 개선시켜 싱글톤 패턴을 구현시킬 수 있다.

public class StringToStringArrayConverter implements Converter<String, String[]> {
// String을 String[]로 변환시키는 Converter
@Override
public String[] Convert(String source) {
	return source.split("-");
}


- ConversionService에 Converter을 등록시키면 만든 Converter을 사용할 수 있다.
- Spring에서는 WebDataBinder에 DefaultFormattingConversionService를 통해 여러 타입 변환을 제공하고 있다.

 

 


 

 

 Formatter

 

- 바인딩할 객체에 직접 변환 Formatter 어노테이션을 부여할 수 있다.
- 이는 양방향 타입변환을 제공한다.

@DateTimeFormat(pattern= [패턴] ) // ex) "yyyy-mm-dd"
private Date Birth; 
// 입력받은 생일에 관한 문자열이 패턴과 맞으면 Date타입으로 변환한다.
// 이 방식은 변환메서드와 비교하였을 때, 모든 컨트롤러에 동일하게 적용되므로 중복된 변환일 경우 코드의 양을 줄여준다.

 

 

 

 

 

 

 

'웹개발' 카테고리의 다른 글

컨트롤러  (0) 2023.06.18
스프링부트 프로젝트의 구조  (0) 2023.06.18
자바 스프링 예외처리  (0) 2023.05.26
JSP 자세히 알아보기  (0) 2023.05.25
세션(Session)  (0) 2023.05.24
profile

일기장

@공군급양

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!