์ด๋ฒ์ Exception์ ๋ํด์ ๊ณต๋ถ๋ฅผ ์ข ํ๋ค๊ฐ ์ง๊ธ๊น์ง ๋ชจ๋ฅด๊ณ ์ญ ์ฌ์ฉํ์๋ ์ค์ํ ์ฌ์ค์ ์์๋ฒ๋ ธ์ต๋๋ค. (์ด๊ฒ๋ ๋ชจ๋ฅด๊ณ ๋ฌด์ง์ฑ์ผ๋ก ์ฌ์ฉํ์๋ค๋..ใ
ใ
์ฐธ.. ์ด๋ฌ๋ฉด์ ์ฑ์ฅํ๋ ๊ฑฐ๊ฒ ์ฃ ..) ์ฐ์ ์ ๋ง ๊ฐ๋จํ๊ฒ Checked Exception๊ณผ Unchecked Exception์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. Checked Exception์ Exception์ ํ์ ์์ธ๋ค ์ค RuntimeException์ ์ ์ธํ ๋ชจ๋ ์์ธ๋ค์ Checked Exception์ด๋ผ ํฉ๋๋ค. Checked Exception์ ์ปดํ์ผ ์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ์๋ก ํด์ฃผ์ด์ผ ํ๋ฉฐ, ํด์ฃผ์ง ์๋๋ค๋ฉด ์ปดํ์ผ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค. ์ด์๋ ๋์กฐ์ ์ผ๋ก Unchecked Exception์ RuntimeException๊ณผ ์ด๋ฅผ ์์๋ฐ์ ..
๐๏ธ Spring
์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์๋ฌ ํ์ด์ง๋ฅผ ๊ต์ฅํ ์ฝ๊ฒ ๋ฑ๋กํ ์ ์๋ค. ์คํ๋ง ๋ถํธ๋ ErrorPage๋ฅผ ์๋์ผ๋ก ๋ฑ๋กํด์ค๋ค. ์ด๋ ๊ฒฝ๋ก๋ "/error"์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ์์ฒญ์ ๋ํด ์ฒ๋ฆฌํ๊ธฐ ์ํด BasicErrorController๋ผ๋ ์คํ๋ง ์ปจํธ๋กค๋ฌ๋ฅผ ์๋์ผ๋ก ๋ฑ๋กํ๋ค. ์ค๋ฅ ํ์ด์ง ๋ฑ๋ก ๋ฐฉ๋ฒ BasicErrorController๋ ๊ธฐ๋ณธ์ ์ธ ๋ก์ง์ด ๋ชจ๋ ๊ฐ๋ฐ๋์ด ์๋ค. ๊ฐ๋ฐ์๋ BasicErrorController๊ฐ ์ ๊ณตํ๋ ๋ฃฐ๊ณผ ์ฐ์ ์์์ ๋ฐ๋ผ์ ์ค๋ฅ ํ์ด์ง๋ฅผ ๋ฑ๋กํ๋ฉด ๋๋ค. ์ด์ ๋ถํฐ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์. ๋ทฐ ์ ํ ์ฐ์ ์์ ๋ทฐ ํ
ํ๋ฆฟ resources/templates/error/500.html resources/templates/error/5xx.html ์ ์ ๋ฆฌ์์ค (static..
ํ์ธํด๋ณด๋๊น, ์ ๋ฒ์ ๋๊ธ์ด๋ ๋๋๊ธ ์๋น์ค๋ ๋๋ถ๋ถ ๊ตฌํ์ ํด๋์์๋ค์...ใ
ใ
;; ์ด๋ฒ์๋ ์ ๋ฒ์ ๊ตฌํํ๋ ์ฝ๋๋ฅผ ์กฐ๊ธ๋ง ์์ ํ๊ณ , ๊ทธ์ ๋ฐ๋ผ ํ
์คํธ์ฝ๋๋ฅผ ์์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์๋ฃ) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ (์๋ฃ) ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ (์๋ฃ) ๊ฒ์ํ ์๋น์ค ๊ตฌํ (์งํ ์ค) ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) (์งํ ์ค) ์์ธ ์ฒ๋ฆฌ (์๋ฃ) ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ..
์คํ๋ง์ ์ฌ์ฉํ์ง ์๋ ์์ํ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ์์ธ๋ฅผ ๋ค์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ค. Exception - ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๊ทธ ์ผ๋ฐ์ ์ธ ์์ธ response.sendError(HTTP ์ํ ์ฝ๋, ์ค๋ฅ ๋ฉ์์ง) 1. Exception์ ์ฒ๋ฆฌ ๋ฐฉ์ ์๋ฐ์ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ง์ ์คํํ๋ ๊ฒฝ์ฐ, main์ด๋ผ๋ ์ด๋ฆ์ ์ฐ๋ ๋๊ฐ ์คํ๋๋ค. ๋ง์ฝ ์คํ ๋์ค์ ์์ธ๋ฅผ ์ก์ง ๋ชปํ๊ณ ์ฒ์ ์คํํ main() ๋ฉ์๋๋ฅผ ๋์ด์ ์์ธ๊ฐ ๋์ ธ์ง๋ฉด, ์์ธ ์ ๋ณด๋ฅผ ๋จ๊ธฐ๊ณ ํด๋น ์ฐ๋ ๋๋ ์ข
๋ฃ๋๋ค. ์ด๊ฑด ๋ง์ด๋ค ๊ฒฝํํด ๋ณด์์ ๊ฒ์ด๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์์ฒญ๋ณ๋ก ๋ณ๋์ ์ฐ๋ ๋๊ฐ ํ ๋น๋๊ณ , ์ด๋ ์๋ธ๋ฆฟ ์ปจํ
์ด๋ ์์์ ์คํ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์์ ์์ธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, try catch๋ก ์ก์ง ๋ชปํ๊ณ ์๋ธ๋ฆฟ ์ปจํ
์ด๋ ๋ฐ์ผ๋ก ์..
์์ํ๊ธฐ์ ์์ ํํฐ๋ ์๋ธ๋ฆฟ์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๊ณ , ์ธํฐ์
ํฐ๋ ์คํ๋ง์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฅผ ์๊ณ ๊ณต๋ถ๋ฅผ ์์ํด๋ณด๋๋ก ํ์. ์๋ธ๋ฆฟ ํํฐ ํํฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ๋ฑ๊ณผ ๊ฐ์, ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ณตํต์ ์ผ๋ก ๊ด์ฌ์ด ์๋ ๋ก์ง์ ์ฒ๋ฆฌํ๊ธฐ ์ํจ์ด๋ค. ์คํ๋ง AOP๋ก๋ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ์น๊ณผ ๊ด๋ จ๋ ๊ณตํต ๊ด์ฌ์ฌ๋ ํํฐ ๋๋ ์ธํฐ์
ํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์น๊ณผ ๊ด๋ จ๋ ๋ก์ง์ ์ฒ๋ฆฌํ ๋์๋ HTTP์ ์ ๋ณด๊ฐ ํ์ํ๋ฐ, ํํฐ๋ ์ธํฐ์
ํฐ๋ HttpServletRequest, HttpServletResponse๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ด๋ค. ํํฐ์ ํ๋ฆ Http ์์ฒญ -> WAS -> ํํฐ -> (๋์คํจ์ฒ)์๋ธ๋ฆฟ -> ์ปจํธ๋กค๋ฌ ํํฐ๋ฅผ ํธ์ถํ ๋ค์์ ์๋ธ๋ฆฟ์ด ํธ์ถ๋๊ธฐ ๋๋ฌธ์, ์์ฒญ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ฅ ๋ฑ์ ๋ก์ง์ ์ฒ๋ฆฌํ๊ธฐ..
์ด๋ฒ ๊ธ์์๋ Post์ ๋ํ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ , ํ์ผ์ ์ ์ฅํ๋ File Service๊น์ง ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ค๋์ ์ ๊ฐ ๋ถ์คํฐ์ท์ ๋ง์ ๋ชธ์ํ๊ฐ ์ข์ง ์์ ๊ด๊ณ๋ก ํ
์คํธ์ฝ๋๊น์ง ์์ฑํ ํ์ ์์ด์, ํ
์คํธ์ฝ๋๋ ์ดํ ํฌ์คํ
์์ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์๋ฃ) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ (์๋ฃ) ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ (์๋ฃ) ๊ฒ์ํ ์๋น์ค ๊ตฌํ (์งํ ์ค) ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ (์๋ฃ) ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์..
์ด๋ฒ ๊ธ์์๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์์ฑํ๊ธฐ ์ ์, ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ฐ๊พธ๋ ์๊ฐ์ ๊ฐ๊ฒ ์ต๋๋ค. ์ง๊ธ๊น์ง ์์ธ๊ฐ ๋ฐ์ํด๋ ํญ์ ์ํ์ฝ๋๋ฅผ 200์ผ๋ก ๋ฐ์์์ผฐ์๋๋ฐ, ์ด๋ฅผ ๋ค์ ์์ธ ์ผ์ด์ค์ ๋ง๊ฒ ์ํ์ฝ๋๋ฅผ ๋ฐํํด๋ณด๋ ค ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ์ค์ํ ๋ถ๋ถ์ ์๋๊ธฐ์ ๊ฑด๋๋ฐ์
๋ ๋ฉ๋๋ค. ๋จ์ง ์ดํ ์ ์ ์ฝ๋๊ฐ ์ผ๋ถ ๋ค๋ฅผ ์ ์์ผ๋, ๊ทธ๋ถ๋ถ๋ง ์ฃผ์ํด์ฃผ์๋ฉด ๋ฉ๋๋น. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์๋ฃ) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ (์๋ฃ) ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ (์๋ฃ) ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ (์งํ ์ค) ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ..
Bean Validation ๊ธฐ๋ณธ์ ์ ๊ฒ์ฆ ๋ก์ง์ ๊ณตํตํํ๊ณ , ํ์คํ ํ ๊ฒ์ด Bean Validation์ด๋ค. Bean Validation์ ํน์ ํ ๊ตฌํ์ฒด๊ฐ ์๋๋ผ Bean Validation 2.0์ด๋ผ๋ ๊ธฐ์ ํ์ค์ด๋ค. ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด, ๊ฒ์ฆ ์ ๋
ธํ
์ด์
๊ณผ ์ฌ๋ฌ ์ธํฐํ์ด์ค์ ๋ชจ์์ด๋ค. ์ด๋ฌํ Bean Validation์ ๊ตฌํํ ๊ธฐ์ ๋ค ์ค ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ํ์ด๋ฒ๋ค์ดํธ Validatior๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ฆ์ ํ์ด๋ฒ๋ค์ดํธ๊ฐ ๋ถ์ด์์ง๋ง ORM๊ณผ๋ ๊ด๋ จ์ด ์๋ค. ์๋๋ ์ฐธ๊ณ ์ฌ์ดํธ๋ค Hibernate Validator 6.2.1.Final - Jakarta Bean Validation Reference Implementation: Reference Guide Validating data is a commo..