๋ชฉ๋ก์ „์ฒด ๊ธ€ (162)

EEALL@ONCE

๐ŸŒฑAOP

1. AOP๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ ๐Ÿ“๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ(cross-cutting concern) vs ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ(core concern) ๋ถ„๋ฆฌ ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ ๊ฐ™์€ ๊ฒฝ์šฐ, ๋งŽ์€ class๊ฐ€ ๊ณตํ†ต์œผ๋กœ ํ•„์š”ํ•œ๋Š” ๋ถ€๋ถ„์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์™„๋ฃŒ๋˜๋Š” ์‹œ๊ฐ„ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋ฉด, ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ์€ ๊ฐ class๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ , ํ•ต์‹ฌ์ ์ธ ์ด์œ ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ํšŒ์›๋“ฑ๋กservice๋ผ๋ฉด, ํšŒ์›์„ ๋“ฑ๋กํ•˜๋Š” ๋กœ์ง์— ํ•ด๋‹น ๋œ๋‹ค. ๐Ÿฅ‘AOP๋Š” ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด๋‹ค. ๐Ÿ“@Aspect ํ•„์š” +@Component ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ์•„๋‹˜ config์— ๋”ฐ๋กœ ๋“ฑ๋ก ๐Ÿ“@Around ํ•ด๋‹น ๊ณตํ†ต ๋กœ์ง์„ ์ ์šฉ ๋ฐ›์„ ๊ณณ ๋ช…์‹œ [AOP ์˜ˆ์ œ] @Component @Aspect public class TimeTraceAop {..

Spring๐ŸŒฑ 2023. 6. 22. 17:53
๐ŸŒฑ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •

์ƒ์„ฑ์ž์— @Autowired ๊ฐ€ ์žˆ์œผ๋ฉด ์Šคํ”„๋ง์ด ์—ฐ๊ด€๋œ ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ฐพ์•„์„œ ๋„ฃ์–ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด ์˜์กด๊ด€๊ณ„๋ฅผ ์™ธ๋ถ€์—์„œ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์„ DI (Dependency Injection), ์˜์กด์„ฑ ์ฃผ์ž…์ด๋ผ ํ•œ๋‹ค. [์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ -์Šคํ”„๋ง ์ž…๋ฌธ] โ–ถautoWired๊ฒฝ์šฐ ์—ฐ๊ฒฐ๋˜๋Š” ๋‘ ๊ฐ์ฒด ๋ชจ๋‘ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ์–ด์•ผํ•œ๋‹ค. (๐ŸŒฑ์Šคํ”„๋ง ๋นˆ(Bean)์ด๋ž€? ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ๋œปํ•˜๋ฉฐ, ํ•˜๋‚˜ ์ด์ƒ์˜ ๋นˆ(Bean)์„ ๊ด€๋ฆฌํ•œ๋‹ค.) ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• 1. ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ • (๐Ÿšฉ์„ ํ˜ธ) ๐Ÿฅ‘์ปดํฌ๋„ŒํŠธ ์Šค์บ” ์›๋ฆฌ @Component ์• ๋…ธํ…Œ์ด์…˜์ด ์žˆ์œผ๋ฉด ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก๋œ๋‹ค. @Component ๋ฅผ ํฌํ•จํ•˜๋Š” ๋‹ค์Œ ์• ๋…ธํ…Œ์ด์…˜๋„ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก๋œ๋‹ค. @..

Spring๐ŸŒฑ 2023. 6. 22. 17:16