Data Binding
์ฌ์ฉ์๋ ์ธ๋ถ ์๋ฒ์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ํน์ ๋๋ฉ์ธ ๊ฐ์ฒด์ ์ ์ฅํด์ Request ์ ๋ด์์ฃผ๋ ๊ฒ์ ๋ปํ๋ค.
Converter<S, T> Interface
package org.springframework.core.convert.converter;
public interface Converter<S, T> {
T convert(S source);
}
S(Source) ํ์ ์ ๋ฐ์ T(Target) ํ์ ์ผ๋ก ๋ณํํด์ฃผ๋ Interface
ํ์ฉ ๋ฐฉ๋ฒ
// ์์ฒญ
GET /user-info
x-auth-user : {"id":123, "name":"Paul"}
// ์ ์ ๊ฐ์ฒด
public class XAuthUser {
private int id;
private String name;
// the usual getters and setters...
}
@GetMapping("/user-info")
public UserInfoResponse getUserInfo(
@RequestHeader("x-auth-user") XAuthUser xAuthUser){
// get User Info logic here...
}
@Component
public class XAuthUserConverter implements Converter<String, XAuthUser> {
@Override
public XAuthUser convert(String source) {
return objectMapper.readValue(source, XAuthUser.class);
}
}
ํค๋์ ๋ด๊ธด json ํ์ ๋ฌธ์์ด์ XAuthUser์ ๋ฐ๋ก ๋ด๊ณ ์ถ์ ๊ฒฝ์ฐ Converter ๋ฅผ Bean ์ผ๋ก ๋ฑ๋กํ ์ ์๋ค..
์ด์ ๋น์ทํ๊ฒ PathParameter ๋ ๊ธฐํ ํน์ํ ๊ฒฝ์ฐ์ ๋ฐ์ดํฐ๋ฅผ ํน์ ๊ฐ์ฒด์ ๋ด๊ณ ์ถ์ ๊ฒฝ์ฐ
Converter ๋ฅผ ๋ง๋ค์ด์ Spring ์ Bean ์ผ๋ก ๋ฑ๋ก
์คํ๋ง ๋ด์ ConversionService ๋ผ๋ ๋ด์ฅ๋ ์๋น์ค์์ Converter ๊ตฌํ์ฒด Bean ๋ค์ Converter ๋ฆฌ์คํธ์ ๋ฑ๋ก
์ธ๋ถ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๊ณ , Source Class Type โ Target Class Type ์ด Converter ์ ๋ฑ๋ก๋ ํ์๊ณผ ์ผ์นํ๋ฉด ํด๋น Converter ๊ฐ ๋์ํ๋ ์๋ฆฌ
Formatter
ํน์ ๊ฐ์ฒด โ String ๊ฐ์ ๋ณํ์ ๋ด๋น
Date โ String ๊ฐ์ ๋ณํ์ ์ํํ๋ Formatter
package org.springframework.format.datetime;
public final class DateFormatter implements Formatter<Date> {
public String print(Date date, Locale locale) {
return getDateFormat(locale).format(date);
}
public Date parse(String formatted, Locale locale) throws ParseException {
return getDateFormat(locale).parse(formatted);
}
// getDateFormat ๋ฑ ์ผ๋ถ ๊ตฌํ์ ํต์ฌ์ ์ง์คํ๊ธฐ ์ํด ์๋ต...
}
print
API ์์ฒญ์ ๋ํ ์๋ต์ ์ค ๋, Date ํ์์ผ๋ก ๋ ๋ฐ์ดํฐ๋ฅผ ํน์ locale ์ ๋ง์ถ String ์ผ๋ก ๋ณํparse
API ์์ฒญ์ ๋ฐ์์ฌ ๋, String ์ผ๋ก ๋ "2021-01-01 13:15:00" ๊ฐ์ ๋ ์ง ํ์์ ๋ฐ์ดํฐ๋ฅผ Date ๋ก ๋ณํํ๋๋ก ํจ
Formatter ๋ Converter ์ ๋ง์ฐฌ๊ฐ์ง๋ก Spring Bean ์ผ๋ก ๋ฑ๋กํ๋ฉด ์๋์ผ๋ก ConversionService ์ ๋ฑ๋ก์์ผ์ฃผ๊ธฐ ๋๋ฌธ์ ํ์์ ๋ฐ๋ผ ์๋์ผ๋ก ๋์ํ๊ฒ ๋๋ค. (์์ฒญ/์๋ต ์ ํด๋น ๋ฐ์ดํฐ ํ์ ์ด ์๋ ๊ฒฝ์ฐ)
Last updated
Was this helpful?