Enum 파라미터 바인딩
게시판 서비스를 구현하고 있는데,
RequestBody
에 들어갈 게시판 타입을 enum으로 정의했다.
이 때, 해당 타입을 string 형태로 앞의 세 글자만 넣고 싶었다.
BoardType
public enum BoardType {
HOT, FREE, PROTECTOR, JOB;
@JsonCreator
public static BoardType from(String str) {
String res = "";
switch (str.toUpperCase()) {
case "HOT":
res = "HOT";
break;
case "FRE":
res = "FREE";
break;
case "PRO":
res = "PROTECTOR";
break;
case "JOB":
res = "JOB";
break;
default:
throw new CustomException(NO_MATCHING_ENUM_TYPE);
}
return BoardType.valueOf(res.toUpperCase());
}
}
이런 식으로 정의하면, 대소문자 구분하지 않고 앞 세 글자를 전달했을 때,
제대로 게시판 타입이 저장되는 것을 확인하였다.
enum에 정의되지 않은 키워드가 들어오면, custom으로 정의한 NO_MATCHING_ENUM_TYPE
exception이 발생한다.
Ref.
💛 개인 공부 기록용 블로그입니다. 👻