๐ ์ค๋์ ํ์ต ํค์๋
- Spring AOP
๐ฅ Spring AOP

Spring AOP (Aspect-Oriented Programming)๋ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ ํํ๋ก,
์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ชจ๋์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ๋ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ชจ๋ํํ๋ ๊ธฐ์ ์ ๋๋ค.
์ด๋ฅผ ํตํด ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ฐ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค.
Spring AOP์ ์ฃผ์ ๊ตฌ์ฑ ์์์ ๊ฐ๋ ์ ์๋์ ๊ฐ์ต๋๋ค.
- Aspect (๊ด์ ) : ๊ด์ ์ ํน์ ํ ๊ด์ฌ์ฌ๋ฅผ ๋ํ๋ด๋ ๋ชจ๋์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊น , ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ณด์ ๋ฑ์ด ๊ด์ ์ ์์์ ๋๋ค.
- Join Point (๊ฒฐํฉ ์ง์ ) : ๊ฒฐํฉ ์ง์ ์ ์ ํ๋ฆฌ์ผ์ด์
์คํ ์ค์ Aspect๊ฐ ์ ์ฉ๋ ์ ์๋ ์ง์ ์ ๋งํฉ๋๋ค.
๋ฉ์๋ ํธ์ถ, ์์ธ ๋ฐ์ ๋ฑ์ด ๊ฒฐํฉ ์ง์ ์ ์์์ ๋๋ค. - Advice (์กฐ์ธ) : Advice๋ Aspect์์ ๊ฒฐํฉ ์ง์ ์ ์ฝ์
๋์ด ์คํ๋๋ ์ฝ๋์
๋๋ค.
Spring AOP์์๋ ๋ค์๊ณผ ๊ฐ์ Advice๋ฅผ ์ง์ํฉ๋๋ค.
- Before Advice : ๊ฒฐํฉ ์ง์ ์ด์ ์ ์คํ๋๋ ์ฝ๋.
- After Returning Advice : ๊ฒฐํฉ ์ง์ ์์ ๋ฉ์๋๊ฐ ์ ์์ ์ผ๋ก ๋ฐํ๋ ํ์ ์คํ๋๋ ์ฝ๋.
- After Throwing Advice : ๊ฒฐํฉ ์ง์ ์์ ์์ธ๊ฐ ๋ฐ์ํ ํ์ ์คํ๋๋ ์ฝ๋.
- After Advice : ๊ฒฐํฉ ์ง์ ์์ ๋ฉ์๋๊ฐ ๋ฐํ๋๊ฑฐ๋ ์์ธ๊ฐ ๋ฐ์ํ ํ์ ์คํ๋๋ ์ฝ๋.
- Around Advice : ๊ฒฐํฉ ์ง์ ์ ๊ฐ์ธ์ ๋ฉ์๋ ํธ์ถ ์ ํ์ ์คํ๋๋ ์ฝ๋. - Pointcut (๊ฒฐํฉ์ ) : ๊ฒฐํฉ์ ์ Aspect๊ฐ Advice๋ฅผ ์ ์ฉํ ๊ฒฐํฉ ์ง์ ์ ์ ์ํ๋ ๊ฒ์
๋๋ค.
์ ๊ทํํ์์ด๋ ํน์ ๋ฉ์๋ ํจํด์ ์ฌ์ฉํ์ฌ ๊ฒฐํฉ ์ง์ ์ ์ง์ ํ ์ ์์ต๋๋ค. - Introduction (๋์
) : ๋์
์ ๊ธฐ์กด ํด๋์ค์ ์๋ก์ด ๋ฉ์๋๋ ํ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
Spring AOP์์๋ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ํด๋์ค์ ๋์ ์ ์ํํ ์ ์์ต๋๋ค.
Spring AOP๋ ํ๋ก์ ๊ธฐ๋ฐ์ AOP๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋์ด ์์ต๋๋ค.
์ฆ, Aspect๋ฅผ ์ ์ฉํ ๋น์ Spring์ด ํด๋น ๋น์ ํ๋ก์๋ฅผ ์์ฑํ์ฌ Advice๋ฅผ ์ ์ฉํฉ๋๋ค.
์ด๋ก์จ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ด์ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ณ , ์ฝ๋ ์ค๋ณต์ ํผํ๋ฉฐ, ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
โ๏ธ Sping AOP๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์์
- Proxy ๊ธฐ๋ฐ : Spring AOP๋ ํ๋ก์ ๊ธฐ๋ฐ์ AOP๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, AOP๊ฐ ์ ์ฉ๋๋ ๋์์ ์ธํฐํ์ด์ค๋ฅผ
๊ตฌํํ ๋น์๋ง ์ ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํด๋์ค ๋ด๋ถ์์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ AOP๊ฐ ์ ์ฉ๋์ง ์์ ์ ์์ต๋๋ค. - ์ฑ๋ฅ ์ค๋ฒํค๋ : AOP๋ ์ฝ๋ ์คํ ์ค๊ฐ์ ๊ด์ฌ์ฌ๋ฅผ ์ฝ์
ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
ํนํ Around Advice๋ฅผ ์ฌ์ฉํ ๋, ๋ฉ์๋ ํธ์ถ ์ ํ์ ์ถ๊ฐ ์์ ์ ์ํํ๋ฏ๋ก ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. - ์์์ ์ฃผ์ : ์ฌ๋ฌ ๊ฐ์ Advice๊ฐ ํ๋์ Join Point์ ์ ์ฉ๋ ๊ฒฝ์ฐ, Advice์ ์์๊ฐ ์ค์ํฉ๋๋ค.
Before Advice๊ฐ ๋จผ์ ์คํ๋๊ณ , After Advice๊ฐ ๋์ค์ ์คํ๋ฉ๋๋ค.
๐ฅ Spring AOP์ ๋์
- ๊ฐ๋ ์ ์ดํด

- ์คํ๋ง ์ค์ ๋์

๐ ์ค๋์ ํ๊ณ
Spring AOP ์๋ก์ด ๋ ์์ ๋ฐฐ์ ๋๋ฐ, ์ด๋ก ์ ์์ง๋ง ํ์ฉ์ ํ ์ ์์์ง.. ์ด์ฌํ ํด๋ณด๊ฒ ์ต๋๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
03/15(๊ธ) ๋ด์ผ๋ฐฐ์์บ ํ Java 57์ผ์ฐจ TIL - StringBuilder (0) | 2024.03.15 |
---|---|
03/14(๋ชฉ) ๋ด์ผ๋ฐฐ์์บ ํ Java 56์ผ์ฐจ TIL - AWS (0) | 2024.03.14 |
03/12(ํ) ๋ด์ผ๋ฐฐ์์บ ํ Java 54์ผ์ฐจ TIL - QueryDSL (0) | 2024.03.12 |
03/11(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 53์ผ์ฐจ TIL - SOLID (0) | 2024.03.12 |
03/08(๊ธ) ๋ด์ผ๋ฐฐ์์บ ํ Java 52์ผ์ฐจ TIL - @OneToOne (0) | 2024.03.08 |