๐Ÿ๏ธ Spring

ํฌ์ธํŠธ์ปท ์ง€์‹œ์ž (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..
๋ง ๋ž‘
'๐Ÿ๏ธ Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (5 Page)