๋ชฉ๋ก์ ์ฒด ๊ธ (162)
EEALL@ONCE

1. AOP๊ฐ ํ์ํ ์ํฉ ๐๊ณตํต ๊ด์ฌ ์ฌํญ(cross-cutting concern) vs ํต์ฌ ๊ด์ฌ ์ฌํญ(core concern) ๋ถ๋ฆฌ ๊ณตํต ๊ด์ฌ ์ฌํญ ๊ฐ์ ๊ฒฝ์ฐ, ๋ง์ class๊ฐ ๊ณตํต์ผ๋ก ํ์ํ๋ ๋ถ๋ถ์ด๋ค. ์๋ฅผ๋ค์ด, ๋ก์ง์ ์ํํ๋๋ฐ ์๋ฃ๋๋ ์๊ฐ ๊ฐ์ ๊ฒ์ด๋ค. ๋ฐ๋ฉด, ํต์ฌ ๊ด์ฌ ์ฌํญ์ ๊ฐ class๊ฐ ์กด์ฌํ๋ ์ด์ , ํต์ฌ์ ์ธ ์ด์ ์ด๋ค. ์๋ฅผ๋ค์ด, ํ์๋ฑ๋กservice๋ผ๋ฉด, ํ์์ ๋ฑ๋กํ๋ ๋ก์ง์ ํด๋น ๋๋ค. ๐ฅAOP๋ ๊ณตํต ๊ด์ฌ ์ฌํญ์ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํ ๊ธฐ์ ์ด๋ค. ๐@Aspect ํ์ +@Component ๋ฑ๋กํ๊ฑฐ๋ ์๋ config์ ๋ฐ๋ก ๋ฑ๋ก ๐@Around ํด๋น ๊ณตํต ๋ก์ง์ ์ ์ฉ ๋ฐ์ ๊ณณ ๋ช ์ [AOP ์์ ] @Component @Aspect public class TimeTraceAop {..

์์ฑ์์ @Autowired ๊ฐ ์์ผ๋ฉด ์คํ๋ง์ด ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์์ ์ฐพ์์ ๋ฃ์ด์ค๋ค. ์ด๋ ๊ฒ ๊ฐ์ฒด ์์กด๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ DI (Dependency Injection), ์์กด์ฑ ์ฃผ์ ์ด๋ผ ํ๋ค. [์ธํ๋ฐ ๊น์ํ -์คํ๋ง ์ ๋ฌธ] โถautoWired๊ฒฝ์ฐ ์ฐ๊ฒฐ๋๋ ๋ ๊ฐ์ฒด ๋ชจ๋ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋์ด ์์ด์ผํ๋ค. (๐ฑ์คํ๋ง ๋น(Bean)์ด๋? ์คํ๋ง ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋ปํ๋ฉฐ, ํ๋ ์ด์์ ๋น(Bean)์ ๊ด๋ฆฌํ๋ค.) ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ 1. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์ (๐ฉ์ ํธ) ๐ฅ์ปดํฌ๋ํธ ์ค์บ ์๋ฆฌ @Component ์ ๋ ธํ ์ด์ ์ด ์์ผ๋ฉด ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก๋๋ค. @Component ๋ฅผ ํฌํจํ๋ ๋ค์ ์ ๋ ธํ ์ด์ ๋ ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก๋๋ค. @..