[Spring] Interceptor์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž
ยท
๊ณต๋ถ€ํ•˜๊ธฐ/Spring
Spring Interceptor๋ž€?Spring MVC์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ํŠน์ • ์š”์ฒญ์ด ์ปจํŠธ๋กค๋Ÿฌ์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์ด๋‚˜ ์‘๋‹ต์ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜๋˜๊ธฐ ์ „์— ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.์ด๋ฅผ ํ†ตํ•ด ์ธ์ฆ, ๋กœ๊น…, ๊ณตํ†ต ์ฒ˜๋ฆฌ ๋กœ์ง๋“ฑ์„ ๋ถ„๋ฆฌํ•ด์„œ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.๊ตฌํ˜„ํ•˜๋Š” ๋ฒ•spring-web 5.3 ์ดํ•˜ ๋ฒ„์ „์—์„œ๋Š”`HandlerInterceptorAdaptor` ํด๋ž˜์Šค๋ฅผ ์ƒ์†`HandlerInterceptor` ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.๊ทธ๋Ÿฌ๋‚˜ 5.4 ๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ๋Š” `HandlerInterceptorAdaptor` ํด๋ž˜์Šค๊ฐ€ deprecated ์ฒ˜๋ฆฌ๋˜์–ด `HandlerInterceptor` ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.โ˜‘๏ธ  Spring..
[Spring] ํšŒ์›ํƒˆํ‡ด, Soft Delete๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ (JPA)
ยท
๋งŒ๋“ค์–ด๋ณด๊ธฐ/Spring
ํšŒ์›ํƒˆํ‡ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ...์ผ์ • ๊ด€๋ฆฌ Develop ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ Delete User, ์ฆ‰ ํšŒ์›ํƒˆํ‡ด๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์™”๋‹ค.ํ˜„์žฌ User๋Š” Todo์™€ Comment์˜ FK๋กœ์จ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค. (๊ทธ๋ ‡์ง€๋งŒ Comment๋Š” ์•„์ง ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๋‹ค.)๋ฐ์ดํ„ฐ์˜ ์‚ญ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.Hard Delete๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ User ํ…Œ์ด๋ธ”์—์„œ ์‹ค์ œ๋กœ ํ•ด๋‹น ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ๊ฒฝ์šฐ ์™ธ๋ž˜ ํ‚ค ๊ด€๊ณ„๋ฅผ ์ฃผ์˜ํ•ด์„œ ๋‹ค๋ฃจ์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด User ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด Todo ํ…Œ์ด๋ธ”์— ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด DB์—์„œ ๋ฌด๊ฒฐ์„ฑ ์˜ค๋ฅ˜๋ฅผ ๋˜์ง„๋‹ค. ์ด๋Ÿฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” FK๋กœ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์‚ญ์ œํ•ด์ฃผ๊ฑฐ๋‚˜, ํ˜น์€ ``ON DELETE CASCA..
[Spring] LoginCheckFilter ๊ตฌํ˜„ : ๋กœ๊ทธ์ธ/์•„์›ƒ ๋กœ์ง ๊ตฌํ˜„ํ•˜๊ธฐ
ยท
๊ณต๋ถ€ํ•˜๊ธฐ/Spring
Filter ์•Œ์•„๋ณด๊ธฐFilter ์‹คํ–‰ ํ๋ฆ„HTTP ์š”์ฒญ → WAS → `Filter 1 → Filter 2 → ... → Filter N` → Servlet → Controller Servlet์ด ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— Filter๋ฅผ ํ•ญ์ƒ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค.๋”ฐ๋ผ์„œ Controller์—์„œ ์ˆ˜ํ–‰ํ•  ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ Filter์— ๊ตฌํ˜„ํ•˜๋ฉด ๋ชจ๋“  ์š”์ฒญ ํ˜น์€ ์‘๋‹ต์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.ํŠน์ • URL Pattern์—๋งŒ Filter๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜๋„ ์žˆ๋‹ค.Filter์˜ ๊ตฌํ˜„Filter Interface`jakarta.servlet.Filter` ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.์ฃผ์š” ๋ฉ”์„œ๋“œ๋Š” `init`, `doFilter`, `destroy`๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.HTTP ์š”์ฒญ์ด ์˜ค๋ฉด `doFilter` ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.  ← ์›ํ•˜๋Š” ๋กœ์ง์„ ์ด ..
[Spring] ๊ธฐ๋ณธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์™€ Custom ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ
ยท
๊ณต๋ถ€ํ•˜๊ธฐ/Spring
์ผ์ • ๊ด€๋ฆฌ ์•ฑ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ปค์Šคํ…€ ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค.์งง๊ฒŒ ๋‹ค์‹œ ๋ณต๊ธฐํ•ด๋ณด์ž๋ฉด !์ปค์Šคํ…€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•๊ฐ€์žฅ ๋ช…์‹œ์ ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋Š” `try-catch` ๋ฌธ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์— `try-catch` ๋ฌธ์„ ๋•์ง€๋•์ง€ ๋ถ™์ผ ์ˆ˜๋Š” ์—†๋‹ค .. (์•„๋ฌด๋„ ๋ณด๊ณ  ์‹ถ์ง€ ์•Š์•„ํ•˜๋Š” ๋ˆ„๋”๊ธฐ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ) Spring์—์„œ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ํŠน์ • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋“ฑ๋กํ•œ ํŠน์ • ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. (๐Ÿ™‡๐Ÿป‍โ™€๏ธ๐Ÿ™‡๐Ÿป‍โ™€๏ธ)ํ•ด๋‹น ๋ฉ”์„œ๋“œ์—๋Š” `@ExceptionHandler` ์–ด๋…ธํ…Œ์ด์…˜์„ ๋‹ฌ์•„์ฃผ๋ฉด ๋œ๋‹ค. ์ด `@ExceptionHandler` ์–ด๋…ธํ…Œ์ด์…˜์•ˆ์— ๋‹ด๋‹นํ•  ์˜ˆ์™ธ ํด๋ž˜์Šค๋“ค์„ ๋ช…์‹œํ•ด์ค€๋‹ค.@ExceptionH..
[Spring] JDBC ์ดํ•ดํ•˜๊ธฐ
ยท
๊ณต๋ถ€ํ•˜๊ธฐ/Spring
JDBC๋ž€?JDBC (Java DataBase Connectivity)Java ํ‘œ์ค€ API๋กœ , SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ํด๋ž˜์Šค๋“ค์˜ ์ง‘ํ•ฉJava๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์˜ค๋ž˜ & ๋„๋ฆฌ ์‚ฌ์šฉ๋œ Java์˜ ํ‘œ์ค€ API์ด๋‹ค.JDBC๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ์ƒ๊ธด๋‹ค.์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ๋ฒˆ๊ฑฐ๋กญ๋‹ค. SQLException ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด Try-Catch ๋ธ”๋ก์„ ์—ฌ๋Ÿฌ ๊ณณ์— ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.Connection, Statement, ResultSet ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ ๋’ค ๋ฐ˜๋“œ์‹œ close() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ์ด์ฒ˜๋Ÿผ ์ž์› ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์ž์› ๊ด€๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.์ฟผ..