이번에 스타트업에 취업하면서 많은 걸 배우는 동시에 많은 게 싫어졌다.
하지만 버티고 나면 추억이고 나의 경력이 되겠지 ... ㅠ 꿻
우선 처음 프로젝트를 들어가서 처음으로 사용해 봤다. 학원에서 많이 사용하지 않는다고 배웠지만
이번에 사용하면서 가독성면에서 매우 좋다고 느꼈기 때문에 나중을 위해 정리한다!
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);
}
'WEB > JAVA' 카테고리의 다른 글
내가 보려고 정리하는 JAVA 멀티 스레드 1 - 멀티스레드 개념 (0) | 2021.09.13 |
---|---|
객체 지향 프로그래밍 - 객체, 캡슐화 (0) | 2020.12.05 |
[JAVA] 의 데이터 타입의 분류 (0) | 2020.06.23 |
Java Enum이란? (0) | 2020.04.19 |
람다식 (stream,map,collect) (0) | 2020.04.13 |