๐Ÿ๏ธ Spring/AOP

์–ด๋“œ๋ฐ”์ด์Šค์˜ ์ข…๋ฅ˜ ๋Œ€ํ‘œ์ ์ธ ์–ด๋“œ๋ฐ”์ด์Šค๋กœ๋Š” @Around๊ฐ€ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ์ด์™ธ์—๋„ ๋‹ค๋ฅธ ์–ด๋“œ๋ฐ”์ด์Šค๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. @Around @Before @AfterReturning @AfterThrowing @After @Around ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ „ํ›„์— ์ˆ˜ํ–‰๋˜๋Š” ์–ด๋“œ๋ฐ”์ด์Šค๋กœ, ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ธ ํฌ์ธํŠธ์˜ ์‹คํ–‰ ์—ฌ๋ถ€์™€, ์‹คํ–‰ ํšŸ์ˆ˜, ๋ฐ˜ํ™˜ ๊ฐ’์˜ ๋ณ€ํ™˜๊ณผ ์˜ˆ์™ธ ๋ณ€ํ™˜ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. @Before ์กฐ์ธ ํฌ์ธํŠธ ์‹คํ–‰ ์ด์ „์— ์‹คํ–‰๋˜๋Š” ์–ด๋“œ๋ฐ”์ด์Šค์ž…๋‹ˆ๋‹ค. @AfterReturning ์กฐ์ธ ํฌ์ธํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํ›„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ @Around์™€๋Š” ๋‹ฌ๋ฆฌ ๊ฐ’์„ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. (์กฐ์ž‘์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.) @AfterThrowing ์กฐ์ธ ํฌ์ธํŠธ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ๊ฒฝ์šฐ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. @After ..
๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ this, target, args, @target, @within, @annotation, @args ์œ„์˜ ํฌ์ธํŠธ์ปท ์ง€์‹œ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์–ด๋“œ๋ฐ”์ด์Šค์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. @Before("allMember() && args(argName, ..)") fun log(argName: String) { println("[log] argName = {${argName}}") } ํฌ์ธํŠธ์ปท์—์„œ์˜ ์ด๋ฆ„๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ๋งž์ถ”์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” argName์œผ๋กœ ๋งž์ถ”์—ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ํƒ€์ž…์ด ๋ฉ”์„œ๋“œ์— ์ง€์ •๋œ ํƒ€์ž…์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ฆ‰ args(argName, ..)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. args(String, ..) ์˜ˆ์ œ ์ฝ”๋“œ @Target(..
ํฌ์ธํŠธ์ปท ์ง€์‹œ์ž (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 ํ”„๋ก์‹œ)๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์กฐ์ธ ํฌ์ธํŠธ๋ฅผ ๋งค์นญํ•ฉ๋‹ˆ๋‹ค. target: target ๊ฐ์ฒด(์Šคํ”„๋ง AOP ํ”„๋ก์‹œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹ค์ œ ๋Œ€์ƒ)๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์กฐ์ธ ..
ํฌ์ธํŠธ์ปท ์ง€์‹œ์ž (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: ํŠน์ •ํ•œ ํƒ€์ž… ๋‚ด์˜ ์กฐ์ธ ํฌ์ธํŠธ๋ฅผ ๋งค์นญํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ชจ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋ฉด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ฐธ๊ณ  - (https://ttl-blog.tistory.com/871) this: ์Šคํ”„๋ง ๋นˆ ๊ฐ์ฒด(์Šคํ”„๋ง AOP ํ”„๋ก์‹œ)๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์กฐ์ธ ํฌ์ธํŠธ๋ฅผ ๋งค์นญํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ฐธ๊ณ  - (https://ttl-blog.tistory.com/878) target: tar..
๋ง ๋ž‘
'๐Ÿ๏ธ Spring/AOP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก