ํฌ์ธํธ์ปท ์ง์์ (Pointcut Designators) ์คํ๋ง์์๋ ํฌ์ธํธ์ปท ํํ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ AspectJ ํฌ์ธํธ์ปท ์ง์์(PCD)๋ฅผ ์ง์ํฉ๋๋ค. execution: ๋ฉ์๋ ์คํ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ์คํ๋ง AOP์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/870) within: ํน์ ํ ํ์
๋ด์ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ถ๋ชจ ํ์
์ ์ง์ ํ๋ฉด ์ ์ฉ๋์ง ์์ต๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/871) this: ์คํ๋ง ๋น ๊ฐ์ฒด(์คํ๋ง AOP ํ๋ก์)๋ฅผ ๋์์ผ๋ก ํ๋ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/878) target: tar..
ํฌ์ธํธ์ปท ์ง์์ (Pointcut Designators) ์คํ๋ง์์๋ ํฌ์ธํธ์ปท ํํ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ AspectJ ํฌ์ธํธ์ปท ์ง์์(PCD)๋ฅผ ์ง์ํฉ๋๋ค. execution: ๋ฉ์๋ ์คํ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ์คํ๋ง AOP์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/870) within: ํน์ ํ ํ์
๋ด์ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ถ๋ชจ ํ์
์ ์ง์ ํ๋ฉด ์ ์ฉ๋์ง ์์ต๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/871) this: ์คํ๋ง ๋น ๊ฐ์ฒด(์คํ๋ง AOP ํ๋ก์)๋ฅผ ๋์์ผ๋ก ํ๋ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/878) target: tar..
ํฌ์ธํธ์ปท ์ง์์ (Pointcut Designators) ์คํ๋ง์์๋ ํฌ์ธํธ์ปท ํํ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ AspectJ ํฌ์ธํธ์ปท ์ง์์(PCD)๋ฅผ ์ง์ํฉ๋๋ค. execution: ๋ฉ์๋ ์คํ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ์คํ๋ง AOP์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/870) within: ํน์ ํ ํ์
๋ด์ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ถ๋ชจ ํ์
์ ์ง์ ํ๋ฉด ์ ์ฉ๋์ง ์์ต๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/871) this: ์คํ๋ง ๋น ๊ฐ์ฒด(์คํ๋ง AOP ํ๋ก์)๋ฅผ ๋์์ผ๋ก ํ๋ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/878) target: tar..
ํฌ์ธํธ์ปท ์ง์์ (Pointcut Designators) ์คํ๋ง์์๋ ํฌ์ธํธ์ปท ํํ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ AspectJ ํฌ์ธํธ์ปท ์ง์์(PCD)๋ฅผ ์ง์ํฉ๋๋ค. execution: ๋ฉ์๋ ์คํ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ์คํ๋ง AOP์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/870) within: ํน์ ํ ํ์
๋ด์ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ถ๋ชจ ํ์
์ ์ง์ ํ๋ฉด ์ ์ฉ๋์ง ์์ต๋๋ค. this: ์คํ๋ง ๋น ๊ฐ์ฒด(์คํ๋ง AOP ํ๋ก์)๋ฅผ ๋์์ผ๋ก ํ๋ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/878) target: target ๊ฐ์ฒด(์คํ๋ง AOP ํ๋ก์๊ฐ ๊ฐ๋ฆฌํค๋ ์ค์ ๋์)๋ฅผ ๋์์ผ๋ก ํ๋ ์กฐ์ธ ..
ํฌ์ธํธ์ปท ์ง์์ (Pointcut Designators) ์คํ๋ง์์๋ ํฌ์ธํธ์ปท ํํ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ AspectJ ํฌ์ธํธ์ปท ์ง์์(PCD)๋ฅผ ์ง์ํฉ๋๋ค. execution: ๋ฉ์๋ ์คํ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ์คํ๋ง AOP์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. within: ํน์ ํ ํ์
๋ด์ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ถ๋ชจ ํ์
์ ์ง์ ํ๋ฉด ์ ์ฉ๋์ง ์์ต๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/871) this: ์คํ๋ง ๋น ๊ฐ์ฒด(์คํ๋ง AOP ํ๋ก์)๋ฅผ ๋์์ผ๋ก ํ๋ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ๋งค์นญํฉ๋๋ค. ๋ค์์ ์ฐธ๊ณ - (https://ttl-blog.tistory.com/878) target: target ๊ฐ์ฒด(์คํ๋ง AOP ํ๋ก์๊ฐ ๊ฐ๋ฆฌํค๋ ์ค์ ๋์)๋ฅผ ๋์์ผ๋ก ํ๋ ์กฐ์ธ ..
์ด๋ฒ์๋ @Aspect๋ฅผ ํตํด AOP๋ฅผ ๊ตฌํํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด๋ฒ ๊ธ์ ์๋ ์ฌ๋ฌ ํ์ฉ ์์์ ์ด๋๋ฐ์ด์ค๊ฐ์ ์์๋ค์ ๋ํด ์์๋ณด๊ณ , ์ด๋๋ฐ์ด์ค์ ์ข
๋ฅ์ ํฌ์ธํธ์ปท ํํ์์ ๋ค์ ๊ธ์ ์ด์ด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ํฌ์ธํธ์ปท๊ณผ ์ด๋๋ฐ์ด์ค ๋์ ์์ฑ @Aspect class AspectV1 { val log = logger() @Around("execution(* hello.advanced..*(..))") private fun doLog(joinPoint: ProceedingJoinPoint): Any? { log.info("{}", joinPoint.signature) return joinPoint.proceed() } } ํฌ์ธํธ์ปท์ ๋ถ๋ฆฌ - @Pointcut @Aspect clas..
@Aspect ์ด์ ๊ธ(https://ttl-blog.tistory.com/864)์์ Advisor๋ง ๋ฑ๋กํ๋ฉด ์คํ๋ง์ด ์๋์ผ๋ก ํ๋ก์๋ฅผ ์์ฑํด ์ค๋ค๊ณ ํ์์ต๋๋ค. @Aspect๋ Advisor๋ฅผ ํธํ๊ฒ ๋ง๋ค ์ ์๋๋ก ํด์ฃผ๋ ์ด๋
ธํ
์ด์
์
๋๋ค. ์ด๋ค ์์ผ๋ก ๋ง๋ค์ด์ง๋์ง ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. joinPoint.proceed()๋ target(์ค์ ๋์)์ ๋ฉ์๋๋ฅผ ์ค์ ๋ก ํธ์ถํ๋ ์ฝ๋์
๋๋ค. JoinPoint๋ target๊ณผ ์คํ๋ ๋ฉ์๋์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์๊ณ ์์ผ๋ฏ๋ก ์คํํ ์ ์๋ ๊ฒ์
๋๋ค. ๋น์ผ๋ก ๋ฑ๋กํ์ฌ์ผ๋ง ์ ์ฉํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ @Component๋ฅผ ํตํด ๋น์ผ๋ก ๋ฑ๋ก๋๊ฒ ํด์ฃผ์์ต๋๋ค. ์๋ ์๋ฆฌ ์๋ ํ๋ก์ ์์ฑ๊ธฐ(AnnotationAwareAspectJAutoProxyCreator..
๋น ํ์ฒ๋ฆฌ๊ธฐ ๋น์ด ์์ฑ๋ ์ดํ ๋ฌด์์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๊ฑฐ๋, ์์ ํ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ ์๋ ์๋ ๋ฑ ๋น ํ์ฒ๋ฆฌ๊ธฐ๋ ๋ง๊ฐํ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋น ํ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด BeanPostProcessor ์ธํฐํ์ด์ค๋ฅผ ๋ฑ๋กํ ํ, ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ์ฌ์ผ ํฉ๋๋ค. postProcessBeforeInitialization ๊ฐ์ฒด ์์ฑ ์ดํ, @PostConstruct ๊ฐ์ ์ด๊ธฐํ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค. postProcessAfterInitialization ๊ฐ์ฒด ์์ฑ ์ดํ, @PostConstruct ๊ฐ์ ์ด๊ธฐํ๊ฐ ๋ฐ์ํ ์ดํ์ ํธ์ถ๋ฉ๋๋ค. ์์ class BasicTest { @Test fun ap() { val ac = AnnotationConfigApplicationCon..