Skip to main content

Command Palette

Search for a command to run...

AOP(Aspect Oriented Programming)

๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Updated
โ€ข2 min read
AOP(Aspect Oriented Programming)
O

SW์—”์ง€๋‹ˆ์–ด ํ˜ธ์†Œ์ธ

์ •์˜

๐Ÿ’ก
AOP๋Š” Aspect Oriented Programming์˜ ์•ฝ์ž๋กœ, ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ๊ด€์  ์ง€ํ–ฅ์€ ์–ด๋–ค ๋กœ์ง์„ ๊ธฐ์ค€์œผ๋กœ ํ•ต์‹ฌ์ ์ธ ๊ด€์ ๊ณผ ๋ถ€๊ฐ€์ ์ธ ๊ด€์ ์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋ณด๊ณ , ๊ทธ ๊ด€์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ๊ฐ ๋ชจ๋“ˆํ™”ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

ํŠน์ • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „์ด๋‚˜ ๊ณตํ†ต์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ

ํ”„๋ก์‹œ ํŒจํ„ด์ด ์ ์šฉ๋จ

Spring AOP Tutorial for Beginners - Step by Step with Example

์žฅ์ 

์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์•„์ง์œผ๋กœ ์ธํ•œ ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด

์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋กœ๊น…

  • ํŠธ๋žœ์žญ์…˜

  • ์ธ์ฆ

  • OOP๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šด ๋ถ€๋ถ„์„ AOP๋กœ ๋„์ž…ํ•˜์—ฌ ์‰ฝ๊ฒŒ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

๋™์ž‘ ๊ณผ์ •

  1. ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ๋นˆ ํ›„์ฒ˜๋ฆฌ๊ธฐ์—๊ฒŒ ์ „๋‹ฌ

  2. ์–ด๋“œ๋ฐ”์ด์ € ๋‚ด์˜ ํฌ์ธํŠธ์ปท์„ ์ด์šฉํ•ด ์ „๋‹ฌ๋ฐ›์€ ๋นˆ์ด ํ”„๋ก์‹œ ์ ์šฉ ๋Œ€์ƒ์ธ์ง€ ํ™•์ธ

  3. ํ”„๋ก์‹œ ์ƒ์„ฑ ๋Œ€์ƒ ๋นˆ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ

  4. ํ”„๋ก์‹œ๋ฅผ ์ƒ์„ฑํ•œ ๋นˆ์ด๋ผ๋ฉด ํ”„๋ก์‹œ๋ฅผ, ํ”„๋ก์‹œ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ๋นˆ์ด๋ผ๋ฉด ๊ทธ๋ƒฅ ๋นˆ์„ ๋ฐ˜ํ™˜

  5. ๋นˆ ํ›„์ฒ˜๋ฆฌ๊ธฐ์—๊ฒŒ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ์ฒด๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ ๋นˆ์œผ๋กœ ๋“ฑ๋ก


๊ด€๋ จ ๊ธฐ๋Šฅ๋“ค

Target

์–ด๋–ค Advice๊ฐ€ ์ ์šฉ๋˜๋Š” ๊ฐ์ฒด

Advice

AspectJ์—์„œ ํŠน์ • JoinPoint์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ ์ด๋Š” @Before, @After, @AfterThrowing, @AfterReturning ๋“ฑ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ

JoinPoint

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ์ถ”๊ฐ€ ๋™์ž‘์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์  ๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฐ˜ํ™˜ ๊ฐ’ ๋˜๋Š” ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์™€ ๊ฐ™์€ ์ฃผ์–ด์ง„ JoinPoint์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์— ๋Œ€ํ•œ ๋ฐ˜์‚ฌ์ ์ธ ์ ‘๊ทผ์„ ์ œ๊ณต

PointCut

JoinPoint์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์–ด๋–ค Advice๊ฐ€ ์ ์šฉ๋  ์ง€์ ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ

Advisor

๋‹จ์ผ ์กฐ์–ธ์ด ํฌํ•จ๋œ ์ž‘์€ ์ž์ฒด ํฌํ•จํ˜• Aspect์— ํ•ด๋‹น. ์ง์ ‘์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜

Weaving

Aspect๋ฅผ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜• ๋˜๋Š” ๊ฐ์ฒด์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์กฐ์–ธ๋œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •


๋ชจ๋“ˆ

GCLib, AspectJ


AspectJ

ํฌ์ธํŠธ์ปท ํ‘œํ˜„์‹

Declaring a Pointcut :: Spring Framework


์–ด๋“œ๋ฐ”์ด์Šค

After

๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ ํ›„ ํ˜ธ์ถœ

AfterReturning

๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋œ ์ดํ›„์— ํ˜ธ์ถœ

AfterThrowing

๋ฉ”์„œ๋“œ๊ฐ€ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ๋ฐœ์ƒ์‹œํ‚จ ์ดํ›„์— ํ˜ธ์ถœ

Before

๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ด์ „์— ํ˜ธ์ถœ

Around

๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ ์ „๊ณผ ๋ฐ˜ํ™˜๋˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ ์ƒํ™ฉ ์ดํ›„์— ํ˜ธ์ถœ

์ฐธ๊ณ 

Core Technologies :: Spring Framework

Introduction to Spring AOP | Baeldung

(1) [10๋ถ„ ํ…Œ์ฝ”ํ†ก] ์ฝฉํ•˜๋‚˜์˜ ์Šคํ”„๋ง AOP - YouTube

TIL

Part 12 of 20

๋ฐฐ์šด ์ , troubleshooting ํ•ด๋‚˜๊ฐ„ ๊ฒƒ๋“ค์„ ๊ธฐ๋กํ•˜๋Š” ๊ณต๊ฐ„

Up next

IoC(Inversion Of Control)

์ œ์–ด์˜ ์—ญ์ „

More from this blog

Reflection

Refleaction ์ด๋ž€? ์ž๋ฐ”์˜ ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)์€ ํด๋ž˜์Šค๋‚˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ณ , ๋Ÿฐํƒ€์ž„ ์‹œ์— ๋™์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ž๋ฐ” API์ด๋‹ค. Spring ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๋ฆฌํ”Œ๋ ‰์…˜์„ ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)๊ฐ™์€ ๊ณณ์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•œ๋‹ค. Spring ์ปจํ…Œ์ด๋„ˆ๋Š” Bean ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ...

Oct 31, 20233 min read
T

Team Cook's Blog

51 posts

์•ผ๋†€์ž ํ…Œํฌ ์Šค์ฟจ 7์กฐ ์Šคํ„ฐ๋”” ํ™œ๋™์„ ๊ธฐ๋กํ•˜๋Š” ํŒ€ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.