[Redis] springboot + Redis cache(์กฐํšŒ)
ยท
Languages | Frameworks/Spring
๐Ÿ’ก๋ฌธ๋“ ๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์ด์ง€ ํ˜ธ์ถœ ์‹œ ๋งˆ๋‹ค DB์— ์ ‘๊ทผํ•ด์„œ ๊ฐ€์ ธ์˜จ๋‹ค๋ฉด, ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.(๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ) ๊ทธ๋ž˜์„œ In-memory ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ Redis๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜จ๋‹ค๋ฉด ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค. (TTL ์„ค์ •์„ ํ†ตํ•œ ํœ˜๋ฐœ์„ฑ ๋ฐ์ดํ„ฐ ์ €์žฅ) ๋˜ํ•œ, Springboot์—์„œ๋Š” Redis์™€ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•œ library๋„ ์ง€์›ํ•ด์ฃผ๊ณ , cache ๊ธฐ๋Šฅ๋„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. Springboot์—์„œ Redis๋ฅผ ํ™œ์šฉํ•˜์—ฌ cache ๊ธฐ๋Šฅ์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ „๋žต์€ [Redis] ์บ์‹œ ์„ค๊ณ„ ์ „๋žต ์ง€์นจ์„ ์ฐธ๊ณ ํ•˜์ž. ์ด์ œ ์•„๋ž˜๋ฅผ ํ†ตํ•ด Spring boot์— Redis๋ฅผ ์—ฐ๋™ํ•˜๊ณ , cache๋„ ์‚ฌ์šฉํ•ด๋ณด๋„๋ก ํ•˜์ž! 1. ๋ ˆ๋””์Šค ์—ฐ๋™ํ•˜๊ธฐ(์˜์กด์„ฑ ..
[QueryDSL] N + 1 ํ˜„์ƒ ํ•ด๊ฒฐ ๊ณผ์ •
ยท
Languages | Frameworks/Spring
๋ฌธ์ œ์  poi_basic ํ…Œ์ด๋ธ” ๋งŒ์„ ์กฐํšŒํ•˜๋ คํ–ˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด N + 1 ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์—ˆ๋‹ค. ํ˜„์ƒํ™ฉ poi_basic ํ…Œ์ด๋ธ”๊ณผ poi_facility ํ…Œ์ด๋ธ”์€ OneToOne๊ด€๊ณ„์ด๋‹ค. Entity๋กœ DB ์กฐํšŒ ํ…Œ์ด๋ธ” ์กฐํšŒ ์ฝ”๋“œ ๊ณ ์ฐฐ ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ OneToOne๊ด€๊ณ„์—์„œ N+1 ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค. ๋ถ„๋ช… ์–‘์ชฝ ํ…Œ์ด๋ธ”์— ์ง€์—ฐ๋กœ๋”ฉ(Lazyloading)์„ ์„ค์ •ํ–ˆ์—ˆ๋Š”๋ฐ, ์ง€์—ฐ๋กœ๋”ฉ์ด ์ œ๋Œ€๋กœ ์ ์šฉ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด๋‹ค. ์ž ๊ทธ๋Ÿผ ์™œ N+1์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. N+1์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ํ”„๋ก์‹œ ์ดˆ๊ธฐํ™”๊ฐ€ ์ผ์–ด๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. Q. [Order_Item]ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋Š”๋ฐ [Order]ํ…Œ์ด๋ธ”๊ณผ [Product]๋ฅผ ํ•ญ์ƒ ํ•จ๊ป˜ ์กฐํšŒํ•ด์•ผ ํ•˜๋‚˜? ๋‹ต์€ โ€œNoโ€..
@ControllerAdvice๋ฅผ ํ†ตํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ถ„๋ฆฌ, ํ†ตํ•ฉํ•˜๊ธฐ
ยท
Languages | Frameworks/Spring
@ControllerAdvice @ExceptionHandler๊ฐ€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๊ฒƒ์ด๋ผ๋ฉด, @ControllerAdvice๋Š” ๋ชจ๋“  @Controller ์ฆ‰, ์ „์—ญ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋ฅผ ์žก์•„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” annotation์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋ชจ๋“  jsp(ex. header)์— ๊ฐ™์€ modelAttribute๋ฅผ ๋˜์ ธ์ค˜์•ผ ํ•œ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. @ControllerAdvice public class AdviceController { @ModelAttribute("modelAttribute key๊ฐ’") public String getWhereIP() { return "modelAttribute value๊ฐ’"; }
[IntelliJ] ์ž์ฃผ์“ฐ๋Š” ๋‹จ์ถ•ํ‚ค ์ •๋ฆฌ
ยท
Languages | Frameworks/Spring
Ctrl + spacebar ์ž๋™ ์ฝ”๋“œ์ƒ์„ฑ โŒ˜Shift + R ๋˜๋Š” Alt + Shift + F10 ์ฝ”๋“œ ์‹คํ–‰ CTRL + Alt + L ์ž๋™ ์ค„ ์ •๋ ฌ CTRL + Y ํ•œ์ค„ ์‚ญ์ œ Alt + Enter ์ฝ”๋“œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ์˜ค๋ฅ˜ ์œ„์— ์ปค์„œ๋ฅผ ๋†“๊ณ  Alt+Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ • ์ œ์•ˆ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. โŒ˜1 ๋˜๋Š” Alt+1 ๋„๊ตฌ ์ฐฝ์„ ์—ด ๋•Œ๋„ ๋งˆ์šฐ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โŒ˜1(MacOS) ๋˜๋Š” Alt+1(Windows/Linux)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ์ฐฝ์ด ์—ด๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์— ํฌ์ปค์Šค๊ฐ€ ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. โŒ˜E ๋˜๋Š” Ctrl+E ํ”„๋กœ์ ํŠธ ์ฐฝ์€ ์›ํ•˜๋Š” ํŒŒ์ผ๋กœ ์ด๋™ํ•˜๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โŒ˜E(MacOS) ๋˜๋Š” Ctrl+E(Windows/Linux)๋ฅผ ์‚ฌ์šฉํ•ด ์ตœ๊ทผ ์‹คํ–‰ํ–ˆ๋˜ ํŒŒ์ผ์„ ํ™•์ธํ• ..
[Springboot] spring-security ์ ์šฉ๊ธฐ(2) - OAuth2 ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ
ยท
Languages | Frameworks/Spring
์ด ๊ธ€์€ ์ธํ”„๋Ÿฐ - ์ตœ์ฃผํ˜ธ ๊ฐ•์‚ฌ์˜ ์Šคํ”„๋ง๋ถ€ํŠธ ์‹œํ๋ฆฌํ‹ฐ & JWT ๊ฐ•์˜์˜ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” spring-security๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„ , ์ €๋ฒˆ ๊ธฐ๋Šฅ์— ์‚ด์„ ๋ง๋ถ™์—ฌ์„œ ์†Œ์…œ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.(์ €๋ฒˆ ํฌ์ŠคํŒ… ์ฐธ๊ณ ) ๋จผ์ € ๊ตฌ๊ธ€ ์ฐฝ์— google api ์ฝ˜์†”์„ ์ž…๋ ฅํ•ด์„œ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋‹ค์Œ, ์•„๋ž˜๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ณณ์˜ ์•„๋ž˜๋ฐฉํ–ฅ ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•ด ์ƒˆํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค! ๋งŒ๋“ค๊ธฐ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๋’ค, ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ด์ค๋‹ˆ๋‹ค. ๋‹ค์Œ ์™ผ์ชฝ์˜ OAuth ๋™์˜ ํ™”๋ฉด ํƒญ์—์„œ User Type์„ ์™ธ๋ถ€๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค. ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด, ์•„๋ž˜์ฒ˜๋Ÿผ OAuth ๋™์˜ ํ™”๋ฉด์ด ๋œจ๋Š”๋ฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„๋งŒ ์ ์–ด์ฃผ๊ณ  ํ•˜๋‹จ์˜ ์ €์žฅ..