data bind

사용자가 String 으로 입력한 다양한 도메인타입의 데이터를 변환해주는 녀석 주로 WebMVC 에서 사용하지만 이전에 xml 파일의 데이터를 변환할때도 사용했음.

먼저.. 변환 대상인 Event class

Event.java
package herdin.boot;

public class Event {
	private Integer id;
	private String title;
	public Event(Integer id) {
		this.id = id;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	@Override
	public String toString() {
		return this.id + " : " + this.title;
	}
}

PropertyEditorSupport 를 사용할 경우.

음 Spring Legacy 에선 WebBindingInitializer 를 implements 하여 bean 으로 등록하여 사용하면 되는 것 같다. 안해봤음 찡긋.

Converter 를 사용해보자

String <--> Event 객체를 변환해주는 class 들을 Converter<S, T> 를 implements 하여 만든다.

그리고 Spring Legacy 에서는 WebMvcConfigurer 를 implements 한 설정 class 에서 등록해준다. Spring Boot 에서는 자동으로 등록이 된다. 이렇게 사용하는 법만 알아도 되는걸까..

아무튼 등록만하면 Controller 에서 자동형변환이 되게 된다.

Formatter 를 사용해보자.

위에서 사용한 설정 class 에서 등록 method 만 변경해주면 된다. 이게 대체 뭔차이지..냐면 FormatterLocale 기반으로 사용할 수 있음.

위에서 등록한 ConverterFormatter 들을 이용하여 ConversionService 가 변환 작업을 한다. Spring Boot 에선 기본적으로 등록되는 ConversionServiceWebConversionService 이고, Spring Legacy 에서 기본적으로 등록되는 것은 DefaultFormattingConversionService 이다.

ConversionService.toString() 을 찍어보면 등록된 Converter 들을 볼 수 있다.

Last updated

Was this helpful?