@ControllerAdvice, @ExceptionHandler๋ฅผ ์ด์šฉํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ถ„๋ฆฌ, ํ†ตํ•ฉํ•˜๊ธฐ(Spring์—์„œ ์˜ˆ์™ธ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ์‹ค๋ฌด์—์„œ๋Š” ์–ด๋–ป๊ฒŒ?)
ยท
Languages | Frameworks/Spring
์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ณผ์ • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋Š” ์•„์ฃผ ์ค‘์š”ํ•˜๋ฉด์„œ๋„ ์•„์ฃผ ์–ด๋ ต๋‹ค. ๊ณผํ•˜๋‹คํ•  ๋งŒํผ ์ƒ์„ธํ•˜๊ณ  ๋‹ค์–‘ํ•˜๊ฒŒ ์˜ˆ์™ธ๋ฅผ ์žก์•„ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค๋ฉด, ํด๋ผ์ด์–ธํŠธ๋„ ๊ทธ๋ ‡๊ณ  ์„œ๋ฒ„๋„ ๊ทธ๋ ‡๊ณ  ๋” ์•ˆ์ •์ ์ธ ํ”„๋กœ๊ทธ๋žจ์ด ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์˜ˆ์ธกํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” try-catch๋ฌธ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์š”๊ตฌ์‚ฌํ•ญ์— ์˜ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (ex. validation > ํŠน์ • ๊ฐ’์ด 0~255๋ฒ”์œ„๊ฐ€ ์•„๋‹ˆ๋ฉด ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ์˜ˆ์™ธ ์ฒ˜๋ฆฌ) ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์—์„œ ์ธํ„ฐ์…‰ํ„ฐ๋กœ ์žก์•„์„œ UnauthorizedException ๊ฐ™์€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐํƒ€ ์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋“ค์„ ์ ์šฉํ•˜๋‹ค๋ณด๋ฉด ์ฝ”๋“œ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋ณต์žกํ•ด์ง„๋‹ค. if๋ฌธ์œผ๋กœ ์žก๋“  try-catch๋กœ ์žก๋“  ์ƒ์œ„ ๋ฉ”์„œ๋“œ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„์ž„ํ•˜๋“  ์ฝ”๋“œ..
Spring AOP(๊ด€์ ์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ)
ยท
Languages | Frameworks/Spring
AOP๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ(cross-cutting concern(ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ)) vs ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ(core concern) ํšŒ์› ๊ฐ€์ž… ์‹œ๊ฐ„, ํšŒ์› ์กฐํšŒ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? ์Šคํ”„๋ง AOP ( Aspect Oriented Programming ) AOP๋Š” Aspect Oriented Programming์˜ ์•ฝ์ž๋กœ ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ๊ด€์  ์ง€ํ–ฅ์€ ์‰ฝ๊ฒŒ ๋งํ•ด ์–ด๋–ค ๋กœ์ง์„ ๊ธฐ์ค€์œผ๋กœ ํ•ต์‹ฌ์ ์ธ ๊ด€์ , ๋ถ€๊ฐ€์ ์ธ ๊ด€์ ์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋ณด๊ณ  ๊ทธ ๊ด€์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ๊ฐ ๋ชจ๋“ˆํ™”ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋“ˆํ™”๋ž€ ์–ด๋–ค ๊ณตํ†ต๋œ ๋กœ์ง์ด๋‚˜ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ฌถ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋กœ๋“ค์–ด ํ•ต์‹ฌ์ ์ธ ๊ด€์ ์€ ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ์ ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋œ..
SpringBoot JPA
ยท
Languages | Frameworks/Spring
JPA๋ฅผ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ORM๋ถ€ํ„ฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž. ์‹ค์ œ ์˜ˆ์ œ๋ถ€ํ„ฐ ๋จผ์ € ๋Œ๋ ค๋ณด๊ณ  ๋‚˜์ค‘์— ์ดํ•ดํ•ด๋„ ๋ฌด๋ฐฉ ํ•  ๊ฒƒ ๊ฐ™๋‹ค. # ORM์ด๋ž€? - Object-Relational Mapping (๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜•๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งคํ•‘, ๊ฐ์ฒด์™€ DB์˜ ํ…Œ์ด๋ธ”์ด ๋งคํ•‘์„ ์ด๋ฃจ๋Š” ๊ฒƒ) - ๊ฐ์ฒด๊ฐ€ ํ…Œ์ด๋ธ”์ด ๋˜๋„๋ก ๋งคํ•‘ ์‹œ์ผœ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋‹ค. - ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณต์žก๋„๋ฅผ ์ค„์ด๊ณ  ์ž๋ฐ” ๊ฐ์ฒด์™€ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋‚˜ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ž‘์—…๋“ค์„ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• - SQL Query๊ฐ€ ์•„๋‹Œ ์ง๊ด€์ ์ธ ์ฝ”๋“œ(๋ฉ”์„œ๋“œ)๋กœ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ex) ๊ธฐ์กด์ฟผ๋ฆฌ : SELECT * FROM MEMBER; ์ด๋ฅผ ORM์„ ์‚ฌ์šฉํ•˜๋ฉด Memberํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋œ ๊ฐ์ฒด๊ฐ€ member๋ผ๊ณ  ํ•  ๋•Œ, member.f..