๐ŸŒ WEB/JAVA

Enum Type ์‚ฌ์šฉํ•˜๊ธฐ

์• ์ •์“ฐ 2020. 11. 17. 21:50

์ด๋ฒˆ์— ์Šคํƒ€ํŠธ์—…์— ์ทจ์—…ํ•˜๋ฉด์„œ ๋งŽ์€ ๊ฑธ ๋ฐฐ์šฐ๋Š” ๋™์‹œ์— ๋งŽ์€ ๊ฒŒ ์‹ซ์–ด์กŒ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฒ„ํ‹ฐ๊ณ  ๋‚˜๋ฉด ์ถ”์–ต์ด๊ณ  ๋‚˜์˜ ๊ฒฝ๋ ฅ์ด ๋˜๊ฒ ์ง€ ... ใ…  ๊ฟป

 

์šฐ์„  ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋“ค์–ด๊ฐ€์„œ ์ฒ˜์Œ์œผ๋กœ ์‚ฌ์šฉํ•ด ๋ดค๋‹ค. ํ•™์›์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ฐฐ์› ์ง€๋งŒ

์ด๋ฒˆ์— ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐ€๋…์„ฑ๋ฉด์—์„œ ๋งค์šฐ ์ข‹๋‹ค๊ณ  ๋Š๊ผˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์„ ์œ„ํ•ด ์ •๋ฆฌํ•œ๋‹ค!

 

 

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);
  }

 

 

๋ฐ˜์‘ํ˜•