WEB/JAVA

Enum Type 사용하기

이번에 스타트업에 취업하면서 많은 걸 배우는 동시에 많은 게 싫어졌다.

하지만 버티고 나면 추억이고 나의 경력이 되겠지 ... ㅠ 꿻

 

우선 처음 프로젝트를 들어가서 처음으로 사용해 봤다. 학원에서 많이 사용하지 않는다고 배웠지만

이번에 사용하면서 가독성면에서 매우 좋다고 느꼈기 때문에 나중을 위해 정리한다!

 

 

Spring Boot 에서 api 설계 중

배송 기능을 만들면서 배송상태 관리를 하는데 1,2,3... 등 숫자로 표현되어 1이 무엇인지 2가 무엇인지 일일이 찾아보기 번거로웠다.

또한 코드 리뷰 때 어떤 건지 헷갈릴 거 같아 Enum타입을 사용하기로 했다.

 

@Getter
public enum SomethingStatus {
  PAYMENT_COMPLETE(0),
  PREPARING(1),
  CANCEL(2),
  DELIVERING(3),
  DELIVERY_COMPLETED(4);

  private final int state;

  SomethingStatus(int state) {
    this.state = state;
  }

 

1. enum타입으로 파일을 만들어주고 필드에 해당 숫자에 맞는 용어를 적어주었다.

2. parameter로 받을 state를 선언해주고 

3. 생성자로 받아 필드와 매핑시켜주었다.

+ 추가로 getter를 만들어주지 않고 lombok의 @Getter를 이용하여 깔끔하게 표현되게 하였다.

 

사용할 때는

OrderStatus.DELIVERING 이런 식으로 사용하면 DB에 3으로 update 되거나 insert 된다.

 

API를 구성하면서 시행착오 중 하나가 이 enum 타입이 int인 경우 PathVariable로 받으면 안 된다. PathVariable로 받게 되면 무조건 String 으로 인식하기 때문에 타입오류가 뜰것이다!

 

RequestDto

@Getter
public class RequestDto {
  private int state;
}

 

Controller

 @PutMapping("/something/user/state")
  public ResponseEntity cancel(
      @PathVariable Long userId, @RequestBody Requeststate requestState) {
    return user.state(userId, requestState);
  }