๋ฐ์ํ
AOP๊ฐ ํ์ํ ์ํฉ
- ๋ชจ๋ ๋ฉ์๋์ ํธ์ถ์๊ฐ ์ธก์ ํด์ผ ํ๋ค๋ฉด?
- ์ด ํ์๊ฐ์ ์ฝ๋๋ฅผ
- ์ด๋ ๊ฒ ๊ณ ์ณ์ ์์ ํด์ผ ํ๋ค.
- ์ด๋ฐ ์์ผ๋ก 999๊ฐ์ ๋ฉ์๋๋ฅผ๋ฅผ ์์ ํด์ผ ํ๋ค๋ฉด ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค.
- ๊ณตํต ๊ด์ฌ ์ฌํญ(cross-cutting concern) vs ํต์ฌ ๊ด์ฌ ์ฌํญ(core concern)
- ์๊ฐ์ ์ธก์ ํ๋ ๋ก์ง์ ๊ณตํต ๊ด์ฌ ์ฌํญ์ด๋ค.
AOP
Aspect Oriented Programming
๊ณตํต ๊ด์ฌ ์ฌํญ/ํต์ฌ ๊ด์ฌ ์ฌํญ์ ๋ถ๋ฆฌ
- src-main-hello-hellospring์ aop ํจํค์ง๋ฅผ ๋ง๋ค๊ณ TimeTraceAop ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
- TimeTraceAop ํด๋์ค
- @Aspect
→ AOP ํด๋์ค๋ก ๋ง๋ ๋ค. - @Around
→ ์ ์ฉ๋ฒ์๋ฅผ ์ง์ ํ๋ค. - return joinPoint.proceed();
→ ์ค์ ํด๋์ค๋ฅผ ์คํ. - ์คํ๋ง๋ถํธ์ ๋ฑ๋กํ ๊ฒฝ์ฐ์ AOP๋ @Component ๋ฅผ ์ฌ์ฉํ๋ ๋์ config ์ @Bean ์ผ๋ก ๋ฑ๋กํ๋ ๊ฒ ์ข ๋ ์ผ๋ฐ์ ์ด๋ค.
- @Aspect
- ์๋ฒ๋ฅผ ์คํํ๋ฉด ์ด๋ ๊ฒ ๋ฉ์๋๋ง๋ค ์คํ์๊ฐ์ด ์ถ๋ ฅ๋๋ค.
โป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373
๋ฐ์ํ