[Spring] AOP ๊ฐœ๋… ๋ฐ ์ ์šฉํ•˜๊ธฐ

[Spring] AOP ๊ฐœ๋… ๋ฐ ์ ์šฉํ•˜๊ธฐ

1. AOP๋ž€? - ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Aspect Oriented Programming) - ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ๊ด€์ ์„ ๋ฐ”๊ฟ”๋ณด์ž๋Š” ์˜๋ฏธ - ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(Cross-Cutting Concern)์˜ ๋ถ„๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•จ์œผ๋กœ์จ ๋ชจ๋“ˆ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ - ์—ฌ๋Ÿฌ ๊ฐ์ฒด์— ๊ณตํ†ต์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•ด์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋ฐ˜๋ณต ์ž‘์—…์„ ์ค„์ด๊ณ  ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Œ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•œ์ค„๋กœ AOP๋ฅผ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด, AOP๋Š” ๊ณตํ†ต๋œ ๊ธฐ๋Šฅ์„ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์™œ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ?? ์œ„ ์‚ฌ์ง„์€ ์šฐ์•„ํ•œ ํ…Œํฌ 10๋ถ„ ํ…Œํฌํ†ก ์œ ํŠœ๋ธŒ ์˜์ƒ์—์„œ ์บก์ณํ•œ ์‚ฌ์ง„์ด๋‹ค. ๋งŒ์•ฝ 3๊ฐœ์˜ ๋ฉ”์†Œ๋“œ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ธก์ •ํ•ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋ฉ”์†Œ๋“œ ์‹œ์ž‘ ์ง€์ ๊ณผ ๋๋‚˜๋Š” ์ง€์ ์˜ ์‹œ๊ฐ„์„ ์ธก์ •ํ•ด ์ด์˜ ์ฐจ์ด๋ฅผ ์ถœ๋ ฅํ•  ๊ฒƒ์ด๋‹ค...

  • textsms
๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์™€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ, ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์“ฐ์‹œ๋‚˜์š”? (feat. ์„ฑ๋Šฅ ๊ฐœ์„ )

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์™€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ, ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์“ฐ์‹œ๋‚˜์š”? (feat. ์„ฑ๋Šฅ ๊ฐœ์„ )

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ์ง์—… ์ถ”์ฒœ api์—์„œ ๋ฐ˜ํ™˜๊นŒ์ง€ ํ‰๊ท  6์ดˆ ์ด์ƒ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค. 100๊ฐœ๊ฐ€ ๋„˜๋Š” ์ง์—… csv์— ๊ฐ๊ฐ์˜ csv๋งˆ๋‹ค 6000๊ฐœ๊ฐ€ ๋„˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฑธ ์ „๋ถ€ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š”๊ฒŒ ๋‹น์—ฐํ–ˆ๋‹ค. ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์ ์šฉํ–ˆ์—ˆ๋Š”๋ฐ ํ”„๋กœ์ ํŠธ ๋งˆ๊ฐ ๊ธฐํ•œ์ด ์žˆ์—ˆ๋˜์ง€๋ผ ์‚ฌ์šฉ๋ฒ•๋งŒ ์ตํ˜€ ์ ์šฉํ–ˆ์—ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚˜๊ณ  ๋‹ค์‹œ ๋Œ์•„์™€ ๊ณต๋ถ€ํ•ด๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ค์›Œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ž์„ธํžˆ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. ๋น„๋™๊ธฐ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋Š” ๊ฐ™์€ ๋œป์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋Š” ๋น„์Šทํ•˜๋‹ค ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ™์€ ๋œป์ด ์•„๋‹ˆ๋‹ค. ์˜๋ฏธ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋™๊ธฐ= ์ˆœ์„œ ์Šค๋ ˆ๋“œ= ๊ณต๊ฐ„ or ์ผ๊พผ ๊ทธ๋Ÿผ ์ด์ œ, ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž ๋™๊ธฐ & ๋น„๋™๊ธฐ ๋™๊ธฐ: ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ ๋น„๋™๊ธฐ: ์š”์ฒญ์„ ๋ฐ›์€ ๋’ค ๋จผ์ € ..

  • textsms
[HttpSession] session์˜ ๋™์ž‘ ์›๋ฆฌ ์‚ดํŽด๋ณด๊ธฐ

[HttpSession] session์˜ ๋™์ž‘ ์›๋ฆฌ ์‚ดํŽด๋ณด๊ธฐ

์„ธ์…˜ ๋ฐฉ์‹ ๋กœ๊ทธ์ธ ์„ธ์…˜์€ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ SESSION ID์™€ ๋งคํ•‘ํ•˜์—ฌ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‹๋ณ„์ž์™€ ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ SESSION ID๋ฅผ ์‘๋‹ตํ—ค๋”์— ๋„ฃ์–ด ์ „์†กํ•œ๋‹ค. ๋งค ์‘๋‹ต๋งˆ๋‹ค SESSION ID ๋งŒ ๋ณด๋‚ด๊ธฐ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€์ง€ ์•Š๊ณ  ์„œ๋ฒ„์— ์ €์žฅ๋˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์›น๋ธŒ๋ผ์šฐ์ €์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ ์ •๋ณด์˜๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์ €์žฅ๋Ÿ‰์ด ๋งŽ์•„์ง€๋ฏ€๋กœ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์— ๋ถ€๋‹ด์ด ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ๋กœ๊ทธ์ธ ๊ตฌํ˜„์€ ํ•„์ˆ˜๋ผ๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋˜ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด ์—†์—ˆ๋˜ ํ”„๋กœ์ ํŠธ๋Š” ๊ฑฐ์˜ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ ‡๊ฒŒ ์•„๋ฌด๋ ‡์ง€ ์•Š๊ฒŒ ์‚ฌ์šฉํ–ˆ๋˜ ์„ธ์…˜์— ๋Œ€ํ•ด ์˜๋ฌธ์ ์ด ์ƒ๊ฒผ๋‹ค. session.getAttribute("us..

  • textsms
AWS S3 ์ด๋ฏธ์ง€ ๊ด€๋ จ ๋กœ์ง๊ณผ DB๋กœ์ง ํŠธ๋žœ์žญ์…˜ ๋ถ„๋ฆฌ (DB ์ปค๋„ฅ์…˜ ๋ฌธ์ œ)

AWS S3 ์ด๋ฏธ์ง€ ๊ด€๋ จ ๋กœ์ง๊ณผ DB๋กœ์ง ํŠธ๋žœ์žญ์…˜ ๋ถ„๋ฆฌ (DB ์ปค๋„ฅ์…˜ ๋ฌธ์ œ)

์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋ฉด ๊ฒŒ์‹œ๊ธ€๊ณผ ๊ฐ™์€ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ํŒŒ์ผ์„ ์ถ”๊ฐ€๋กœ ์—…๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งค์šฐ ๋งŽ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๊ณต์—ฐ ํฌ์ŠคํŠธ๋ฅผ DB์— ์ €์žฅํ•˜๋ฉด์„œ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€์™€ ๋‚ด์šฉ์— ๋“ค์–ด๊ฐˆ ์ด๋ฏธ์ง€ ๋“ฑ์ด AWS S3์— ํ•จ๊ป˜ ์ €์žฅ๋˜์—ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์กฐํšŒํ•  ๋•Œ๋„ AWS S3์—์„œ ์กฐํšŒํ•˜๋Š” ๋กœ์ง๊ณผ DB์—์„œ ํฌ์ŠคํŠธ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋กœ์ง์ด ํ•จ๊ป˜ ์ˆ˜ํ–‰๋œ๋‹ค. ์ด๋•Œ ์™ธ๋ถ€์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•ด์˜ค๋Š” ๋กœ์ง๊ณผ DB์—์„œ ์กฐํšŒํ•ด์˜ค๋Š” ๋กœ์ง์„ ํ•œ ํŠธ๋žœ์žญ์…˜์— ๋ฌถ์œผ๋ฉด ์•ˆ ์ข‹์ง€ ์•Š์„๊นŒ?? ๋ฌธ๋“ ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ  ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๋‹ˆ ์—ญ์‹œ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์ด๋ฏธ ๊ณ ๋ฏผํ–ˆ๋˜ ํ”์ ๋“ค์ด ๋ณด์˜€๋‹ค. ์™œ ํ•œ ํŠธ๋žœ์žญ์…˜์— ๋ฌถ์œผ๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ?? ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง•์— ์ฃผ๋ชฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜๋ฉด DB์™€์˜ ์ปค๋„ฅ์…˜์„ ๋งบ๊ณ  ํŠธ๋žœ์žญ์…˜์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ์ปค๋„ฅ์…˜์„ ๋Š์ง€ ์•Š๋Š”๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์—..

  • textsms
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •๋ฆฌ ๋ฐ ๊ณ ๋ฏผ ๊ธฐ๋ก

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •๋ฆฌ ๋ฐ ๊ณ ๋ฏผ ๊ธฐ๋ก

์ด์ „์— ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ๋“ค์— ๋Œ€ํ•ด์„  ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋Š” ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜๋‹ค. ์ž‘์„ฑํ–ˆ๋‹ค ํ•ด๋„ ์™œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”์ง€๋„ ์ž˜ ๋ชจ๋ฅด๊ณ  ๋Œ€์ถฉ ๋„์ ์—ฌ๋ณธ๊ฒŒ ๋‹ค์˜€๋‹ค. tickerBell ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ†ตํ•ฉํ…Œ์ŠคํŠธ, ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์™„์„ฑ๋„ ๋†’์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์šฐ์„  ๋‹จ์œ„ํ…Œ์ŠคํŠธ์— ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” Mock, Mockito์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค. Mock์ด๋ž€? Mock์€ ํ•œ๊ธ€๋กœ "๋ชจ์˜, ๊ฐ€์งœ์˜"๋ผ๋Š” ๋œป์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ๋•Œ ํ•„์š”ํ•œ ์‹ค์ œ ๊ฐ์ฒด์™€ ๋™์ผํ•œ ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ํ…Œ์ŠคํŠธ์˜ ํšจ์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด์„œ ์™œ Mock์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž @Service public class StudyService { public Student getStudent() { // DB์—์„œ study ํ…Œ์ด๋ธ” ์กฐํšŒ (๋ถ€ํ•˜..

  • textsms
JAVA ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์ฒดํฌ ๋ฐ JVM ๋ชจ๋‹ˆํ„ฐ๋ง

JAVA ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์ฒดํฌ ๋ฐ JVM ๋ชจ๋‹ˆํ„ฐ๋ง

ํ”„๋กœ์ ํŠธ๋ฅผ ec2์— ๋ฐฐํฌํ•ด ๋’€๋Š”๋ฐ ์ž๊พธ ์„œ๋ฒ„๊ฐ€ ๋ป—๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ์ฒ˜์Œ ์ผฐ์„ ๋• ์†๋„๋„ ๋น ๋ฅด๊ณ  ๊ดœ์ฐฎ๋‹ค๊ฐ€ 2~3์‹œ๊ฐ„ ๋’ค ์ ‘์†ํ•ด๋ณด๋ฉด ๋Š๋ ค์ ธ์žˆ๊ณ  ๋‹ค์Œ ๋‚  ์ ‘์†ํ•˜๋ฉด ๋ป—์–ด์žˆ์—ˆ๋‹ค. ์ฒ˜์Œ ์ผฐ์„ ๋• ๊ดœ์ฐฎ๋‹ค๊ฐ€ ์‹œ๊ฐ„์ด ์ง€๋‚˜ ๋ป—๋Š”๊ฑธ ๋ณด์•„ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์ผ์–ด๋‚˜๋‚˜ ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฐพ์•„๋ณด๊ฒŒ๋œ ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(memory leak).. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(memory leak)๋ž€? CS ์˜๋ฏธ๋กœ ์‚ดํŽด๋ณผ ๋•Œ, ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ„์† ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ํ˜„์ƒ์ด๋‹ค. JAVA๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Garbage Collection์„ ์ง€์›ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ํšŒ์ˆ˜๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ๋ˆ„์ ์ด ๋˜๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค. Java GC์˜ ํšŒ์ˆ˜ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž 1. ๋ฌด์˜๋ฏธํ•œ Wrap..

  • textsms