AOP 2

[Spring Boot] Spring AOP๋ฅผ ํ™œ์šฉํ•œ Logging

๊ธฐ๋ณธ์ ์œผ๋กœ ํ•จ์ˆ˜ ์‹œ์ž‘ ์ „, ์ข…๋ฃŒ ํ›„, ์—๋Ÿฌ ๋ฐœ์ƒ ํ›„ ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋™์œผ๋กœ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก Aspect๋ฅผ ๋งŒ๋“ค์–ด์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. execution() ์•ˆ์—์„œ ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ๋‚จ๊ธธ ๋ฒ”์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊น…์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋“ค์€ @NoLogging ์–ด๋…ธํ…Œ์ด์…˜์„ ๋งŒ๋“ค์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฏผ๊ฐ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ฑฐ๋‚˜ ๋กœ๊น…์ด ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜ ๋“ฑ) Advice ์‹คํ–‰ ์‹œ์  ์„ค๋ช… @Before ํ•จ์ˆ˜ ์‹œ์ž‘ ์ „ ํ•จ์ˆ˜๊ฐ€ ์†ํ•œ ํด๋ž˜์Šค ์ด๋ฆ„, ํ•จ์ˆ˜ ์ด๋ฆ„, ํ•จ์ˆ˜๋กœ ๋“ค์–ด์˜จ ํŒŒ๋ผ๋ฏธํ„ฐ(args) ๋“ฑ์„ ๋กœ๊ทธ๋กœ ๋‚จ๊น๋‹ˆ๋‹ค. @AfterReturning ํ•จ์ˆ˜ ์‹œ์ž‘ ํ›„ ํ•จ์ˆ˜๊ฐ€ ์†ํ•œ ํด๋ž˜์Šค ์ด๋ฆ„, ํ•จ์ˆ˜ ์ด๋ฆ„, ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฐ’(result) ๋“ฑ์„ ๋กœ๊ทธ๋กœ ๋‚จ๊น๋‹ˆ๋‹ค. @AfterThrowing ์—๋Ÿฌ ๋ฐœ์ƒ ํ›„ ํ•จ์ˆ˜๊ฐ€ ์†..

[Spring Boot] Filter, Interceptor, AOP ์ฐจ์ด ๋ฐ ์ •๋ฆฌ

Spring Boot๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ๋งค์šฐ ํšจ๊ณผ์ ์ธ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋กœ๊ทธ์ธ ๊ด€๋ จ (์„ธ์…˜ ์ฒดํฌ) ์ฒ˜๋ฆฌ, ๊ถŒํ•œ ์ฒดํฌ, XSS(Cross Site Script) ๋ฐฉ์–ด, PC์™€ ๋ชจ๋ฐ”์ผ์›น์˜ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ, ๋กœ๊ทธ, ํŽ˜์ด์ง€ ์ธ์ฝ”๋”ฉ ๋ณ€ํ™ฉ ๋“ฑ์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ ์ค‘์—๋Š” Filter, Interceptor, Aspect-Oriented Programming (AOP) ๋“ฑ์ด ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์•ž, ์ค‘๊ฐ„, ๋’ค์— ์ถ”๊ฐ€ํ•˜์—ฌ ํŠน์ •ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ด์ฃผ๋ฉฐ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ชจ๋“ˆ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค. (๋ชจ๋“  ํŽ˜์ด์ง€๋งˆ๋‹ค ๊ณตํ†ต ์—…๋ฌด์— ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ค‘๋ณต๋œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง€๊ณ  ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ์ค„ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ์†Œ์Šค ๊ด€๋ฆฌ๋„ ์–ด๋ ต๋‹ค.) Intercep..

๋ฐ˜์‘ํ˜•