Skip to content

hojin915/spring-advanced

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

14 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

SPRING ADVANCED

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

1. TodoSaveRequest(Todo Save Request DTO) validation ์ˆ˜์ •

1-1 ๋ฌธ์ œ์ธ์‹

  • TodoSaveRequest ์˜ ํ•„๋“œ์ธ title, contents๋ฅผ ๋ณด๋ฉด ๊ธฐ์กด์—๋Š” @NotBlank ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋˜์–ด ์žˆ์—ˆ๋‹ค.
    Schedule ์—ญํ• ์„ ํ•˜๋Š” Todo ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋„์–ด์“ฐ๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด์€ ์ ํ•ฉํ•˜์ง€ ์•Š์•„ ๋ณด์ธ๋‹ค.

1-2 ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  • ๊ฒ€์ฆ ์กฐ๊ฑด์„ ๋ณ€๊ฒฝ
    • @NotNull ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ Todos ํ…Œ์ด๋ธ”์— title, contents ํ•„๋“œ๊ฐ’์ด null ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.
    • ์ถ”๊ฐ€์ ์œผ๋กœ @Size(min = 1, max = 255) ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ด์„œ ํ˜„์žฌ Todo Entity ์„ค์ •์—์„œ String ์˜ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ DB ์—์„œ๋Š” title, contents ๊ฐ๊ฐ varchar(255) ํƒ€์ž…์œผ๋กœ ๋ฐ›๋„๋ก ์ ์šฉ๋˜์–ด ์žˆ๋Š”๋ฐ, ๊ธธ์ด์— ๋Œ€ํ•œ ์ œํ•œ์ด ์—†์–ด 255์ž๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ์š”์ฒญ์— ๋Œ€ํ•ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค

1-3 ํ•ด๊ฒฐ์™„๋ฃŒ

{
    "id": 17,
    "title": "์ œ๋ชฉ ๋„์–ด์“ฐ๊ธฐ",
    "contents": "๋‚ด์šฉ ๋„์–ด์“ฐ๊ธฐ",
    "weather": "Hot and Humid",
    "user": {
        "id": 3,
        "email": "hojin@naver.com"
    }
}

๋™์ผํ•œ ์ด์œ ๋กœ Comment Entity ์˜ contents ํ•„๋“œ ๋˜ํ•œ validation ์„ ์ˆ˜์ •ํ•ด ์ฃผ์—ˆ๋‹ค

2. Manager ๋“ฑ๋ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ถ”๊ฐ€

2-1 ๋ฌธ์ œ์ธ์‹

  • Todo ์— ๋‹ด๋‹น์ž๋ฅผ ์ง€์ •ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ธ /domain/manager/service/ManagerService ์— ์œ„์น˜ํ•œ saveManager ๋ฉ”์„œ๋“œ์—์„œ
    ๋‹ด๋‹น์ž๋ฅผ ๋“ฑ๋กํ•˜๋Š” ์œ ์ €๊ฐ€ ์ผ์ •์„ ์ž‘์„ฑํ•œ ์œ ์ €์™€ ๋™์ผํ•œ ์œ ์ €์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ๊ฐ€ ์—†๋‹ค.
    ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ์ผ์ •์˜ ๋‹ด๋‹น์ž ๊ถŒํ•œ์„ ๋ˆ„๊ตฌ๋“ ์ง€ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค.

2-2 ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  • ๋ณธ์ธ์„ ํ™•์ธํ•˜๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€
// ManagerService.java ๋‚ด๋ถ€์˜ saveManager() ์— ์ถ”๊ฐ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  if(!user.getId().equals(todo.getUser().getId())){
    throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "๋ณธ์ธ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์€ Todo ์— ๋‹ด๋‹น์ž๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
  }

2-3 ํ•ด๊ฒฐ์™„๋ฃŒ

  • ๋ณธ์ธ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ์ผ์ •์— ๋Œ€ํ•œ ๋‹ด๋‹น์ž ๋“ฑ๋ก ํ–ˆ์„ ๋•Œ
{
    "timestamp": "2025-06-12T03:23:32.313+00:00",
    "status": 401,
    "error": "Unauthorized",
    "path": "/todos/12/managers"
}

๊ถŒํ•œ์— ๊ด€๋ จ๋œ ๋ถ€๋ถ„์ด UserRole.ADMIN, UserRole.USER ์ด๋ ‡๊ฒŒ๋งŒ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ จ๋œ ์ปค์Šคํ…€ ์˜ˆ์™ธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.
Admin, User ์—ญํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณธ์ธ ํ™•์ธ๊ณผ ๊ฐ™์€ ๊ฒ€์ฆ์ด ์ปค์Šคํ…€ ์˜ˆ์™ธ์™€ ํ•จ๊ป˜ ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%