์ค๋ ํ ๊ณต๋ถ ๐ง
ํ์๊ณผ์ Level 1 - 3, 4, 5 ๋๋ด๊ธฐ
- 1-3. AOP ์ดํดํ๊ธฐ
- UserAdminController ํด๋์ค์ changeUserRole( ) ๋ฉ์๋ ์คํ ์ ์ ๋์ํ๋๋ก ์์
- ์คํ ์ ์ ๋์ํด์ผ ํ๋ฏ๋ก @After๋ก ๋์ด ์๋ ์ด๋ ธํ ์ด์ ์ @Before๋ก ๋ณ๊ฒฝํ๋ค.
- ์์ execution ํํ์์ UserAdminController.changeUserRole๋ก ๋ณ๊ฒฝํ๋ค.
- 1-4. ์ปจํธ๋กค๋ฌ ํ
์คํธ ์ดํดํ๊ธฐ
- todo_๋จ๊ฑด_์กฐํ_์_todo๊ฐ_์กด์ฌํ์ง_์์_์์ธ๊ฐ_๋ฐ์ํ๋ค ํ ์คํธ๊ฐ ์คํจํ๊ณ ์์ด์ ์ ์์ ์ผ๋ก ์ํ๋์ด ํต๊ณผ๋ ์ ์๋๋ก ์์
- Service ๋จ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด todo๊ฐ ์กด์ฌํ์ง ์์ ๋, InvalidReqeustException์ด ๋ฐ์ํ๊ณ ์๋ค.
- GlobalExceptionHandler๋ฅผ ํตํด ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋์ด๊ฐ์ ํ์ธํด ๋ณด๋ฉด HttpStatus๊ฐ 400 BAD_REQUEST์ด๋ค.
- ๋ฐ๋ผ์ ํ ์คํธ ์ฝ๋์์๋ ์ ์์ ์ผ๋ก ์ํ๋๊ธฐ ์ํด์๋ OK๊ฐ ๋์ค๋ ๊ฒ์ ํ์ธํ๋ ๊ฒ์ด ์๋๋ผ, BAD_REQUEST๊ฐ ๋์ค๊ณ ์๋ ๊ฒ์ ์ฒดํฌํด์ผ ํ๋ค.
- ๊ทธ๋์ OK๋ก ๋์ด ์๋ ๋ถ๋ถ์ ๋ชจ๋ BAD_REQUEST๋ก ์์ ํ๋ค.
- 1-5. JPA์ ์ดํด
- ํ ์ผ ๊ฒ์ ์ weather ๋๋ ์์ ์ผ ๊ธฐ์ค์ผ๋ก ๊ธฐ๊ฐ ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ์์
- TodoRepository์ ๊ฐ๊ฐ ์กฐ๊ฑด์ ๋ง๋ ๋ฉ์๋ finAllByWeatherOrderByModifiedAtDesc, findAllByModifiedAtBetween, findAllByModifiedAtAfter, findAllByModifiedAtBefore๋ฅผ ์ถ๊ฐํ๋ค.
- Service ๋จ์์ if ๋ฌธ์ ํตํด ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ณ ๊ฐ๊ฐ ์ํฉ์ ๋ง๊ฒ ์กฐํํ ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ ํ๋ค.
์ค๋ ํ๋ฃจ ์ ๋ฆฌ โ๏ธ
์ฃผ๋ง์ด์ง๋ง ๊ณต๋ถ๋ฅผ ๋๊ณ ์ด ์๋ ์์ด์ ๊ณผ์ Level 1์ ๋ชจ๋ ํด๊ฒฐํ๋ค.
๋ด๊ฐ ๊ทธ์ ์ ๊ณต๋ถํ๋ AOP ๋ถ๋ถ์ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์๋ค.
ํ์ง๋ง ๋ฌธ์ ๋ ํ
์คํธ ์ฝ๋์๋ค...
์ฝ๋๊ฐ ์ด๋ฏธ ์ง์ฌ ์๋ค๊ณ ๋ ํ์ง๋ง, ์ฝ๋๊ฐ ์ฝ๊ฒ ์ดํด๋์ง ์์๋ค.. ๋ญ๊ฐ ๋ญ ํ๋ ์ฝ๋์ธ์ง ์ดํดํ๊ธฐ ์ด๋ ค์์ ์ฝ๋ ํ ์ค์ฉ ๋๋ ์ ์ดํดํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ , ๊ทธ๋ค์์ ์ด๋ค ์๋ฌ๊ฐ ๋ฐ์ํด์ ํ
์คํธ ์ฝ๋๊ฐ ํต๊ณผ๋์ง ์๋์ง ํ์ธํ๋ค.
ํ
์คํธ ์ฝ๋์์ ๊ธฐ๋ํ๋ ๊ฐ์ 200 OK์ธ๋ฐ, ์ค์ ๋ก ๋ฐ์ํ๋ ์ฝ๋๋ 400 BAD_REQUEST์๋ค.
๊ทผ๋ฐ ์ฌ๊ธฐ์ ์๋ฌธ์ด ๋ค์๋ ์ ์ด ์ผ์ ์ ์ฐพ์ง ๋ชปํ๋ ๊ฑด๋ฐ ์ 400 BAD_REQUEST๊ฐ ๋์ค๋ ๊ฑธ๊น..? ํ๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋์ ์ฝ๋๋ฅผ ์ฒ์ฒํ ์ดํด๋ดค๊ณ Service์ GlobalExceptionHandler์ ์๋ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ฉด์ ์ดํดํ ์ ์์๋ค. ์ผ์ ์ ์ฐพ์ง ๋ชปํ๋ฉด InvalidRequestException์ด ๋ฐ์ํ๊ฒ ๋๊ณ GlobalExceptionHandler๋ ์ด๋ฅผ HttpStatus = 400 BAD_REQUEST๋ก ๋ฐํํ๊ณ ์์๋ค.
์ด๊ฑธ ์ดํดํ ํ ํ
์คํธ ์ฝ๋์์๋ 400 BAD_REQUEST๋ฅผ ๊ธฐ๋ํ๋ ๊ฒ์ผ๋ก ์ฝ๋๋ฅผ ์์ ํ๊ณ ๋ฌด์ฌํ ํด๊ฒฐ๋์๋ค.
๋ง์ง๋ง์ JPQL์ ์ด์ฉํด์ ์กฐ๊ฑด์ ์ถ๊ฐ์ ์ผ๋ก ์ ์ฉํ๋ ๊ฒ์ด์๋ค.
JPQL์ ๋ง์ด ์ฌ์ฉํ์ง ์์์ ์ฒ์์๋ ๋ฒ๋ฒ
๊ฑฐ๋ ธ๋ค. ์ด๊ฒ ๋ง๊ฒ ์์ฑํ๊ณ ์๋๊ฑด๊ฐ?? ํ๋ ์๋ฌธ์ด ๋ค์์ง๋ง ๋ค ์์ฑํ๊ณ Compile ์๋ฌ๊ฐ ๋จ์ง ์๋ ๊ฒ์ ๋ณด๊ณ ์, ์ ์ ์ ๊ฒ ๋ง๊ตฌ๋ ์๊ฐํ๋ฉด์ ์์ ๊ฐ์ด ์ฝ๊ฐ ์์นํ๋ค.
Service ๋จ์์ ์กฐ๊ฑด์ ๋๋๊ณ ๊ฐ๊ฐ ์กฐ๊ฑด์ ๋ง๋ ๋ฉ์๋๋ฅผ Repository์ ์์ฑํ๋ค. ๋ชจ๋ ์์ฑํ๊ณ ์์ ํ๊ณ ๋๋ ์ฝ๋๊ฐ ๋ชจ๋ ์์ฑ๋์๋ค.
์ด๋ฒ ์ฃผ๋ ์ฝ๊ฒ ์ง์ค์ด ๋์ง ์๋ ํ ์ฃผ์๋ค. ์๊พธ ๋ด ์ง์ ํ๊ฒ ๋๊ณ ๊ทธ๋ฌ๋๋ฐ ๋ค์ ์ ์ ์ ์ฐจ๋ฆฌ๊ณ ๋ค์ ์ฃผ์๋ ์ง์คํด์ ๊ณผ์ ๋ ํด๊ฒฐํ๊ณ ๊ฐ์๋ ์ด์ฌํ ๋ค์ด์ผ๊ฒ ๋ค.
๋ค์ ์ฃผ๋ ํ์ดํ ํด๋ณด์!!
๋ด์ผ ๊ณํ โฐ
- ์๊ณ ๋ฆฌ์ฆ 1๋ฌธ์ ํ๊ธฐ
- ํ์ ๊ณผ์ Level 2 ๋๋ด๊ธฐ
- ์คํ ๋ค๋๋ฐ ์ธ์ ๋ฃ๊ธฐ
+์ถ๊ฐ ๊ณํ์ด ์๊ธธ ์๋ ์์ด์~_~
'โ๏ธ Today I Learned(TIL) > ์คํ๋ฅดํ ๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ TIL ] Kotlin ๋ฌธ๋ฒ ๊ธฐ์ด/์ฌํ_Day 1 (2) | 2025.01.21 |
---|---|
[ TIL ] JPA ์ฌํ_Day 7 (0) | 2025.01.20 |
[ TIL ] JPA ์ฌํ_Day 4 (1) | 2025.01.17 |
[ TIL ] JPA ์ฌํ_Day 3 (0) | 2025.01.16 |
[ TIL ] JPA ์ฌํ_Day 1 (0) | 2025.01.14 |