์ถ์ฒ
Gemini
AOP(Aspect Oriented Programming)๋ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ๋ฒ์ญ๋๋ฉฐ, ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ(์: ๋ก๊ทธ, ํธ๋์ญ์ , ๋ณด์ ๋ฑ)์ ํต์ฌ ๊ธฐ๋ฅ์์ ๋ถ๋ฆฌํ์ฌ ๋ชจ๋ํํ๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋ค.
ํ์์ฑ
์ฝ๋ ์ค๋ณต ๋ฐฉ์ง
์ฌ๋ฌ ํด๋์ค์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋ณ๋์ ๋ชจ๋๋ก ๋ถ๋ฆฌํ์ฌ ์ฝ๋ ์ค๋ณต์ ์ค์ผ ์ ์๋ค.
์ ์ง๋ณด์์ฑ ํฅ์
๊ณตํต ๊ธฐ๋ฅ์ ํ ๊ณณ์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ์ด ํ์ํ ๋ ์์ ํด์ผ ํ ์ฝ๋์ ์์ด ์ค์ด๋ ๋ค.
๋ชจ๋์ฑ ํฅ์
ํต์ฌ ๊ธฐ๋ฅ์๋ง ์ง์คํ ์ ์๋๋ก ํจ์ผ๋ก์จ ์ฝ๋์ ๋ชจ๋์ฑ์ ๋์ธ๋ค.
ํต์ฌ๊ฐ๋
๊ด์ (Aspect)
๊ณตํต ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๋ชจ๋์ด๋ค. ๋ก๊ทธ, ํธ๋์ญ์ , ๋ณด์ ๋ฑ์ด ๋ํ์ ์ธ ๊ด์ ์ด๋ค.
์กฐ์ธ ํฌ์ธํธ(Join Point)
๊ด์ ์ด ์ ์ฉ๋ ์ ์๋ ํ๋ก๊ทธ๋จ ์คํ ์์ ์ ์๋ฏธํ๋ค. ๋ฉ์๋ ํธ์ถ ์ , ํ, ์์ธ ๋ฐ์ ์ ๋ฑ์ด ์กฐ์ธ ํฌ์ธํธ์ ์์์ด๋ค.
ํฌ์ธํธ์ปท(Pointcut)
์กฐ์ธ ํฌ์ธํธ ์ค์์ ์ค์ ๋ก ๊ด์ ์ด ์ ์ฉ๋ ์์น๋ฅผ ์ง์ ํ๋ ํจํด. ํน์ ๋ฉ์๋, ํน์ ํด๋์ค ๋ฑ์ ๊ธฐ์ค์ผ๋ก ํฌ์ธํธ์ปท์ ์ ์ํ ์ ์๋ค.
์ด๋๋ฐ์ด์ค(Advice)
์กฐ์ธ ํฌ์ธํธ์์ ์คํ๋ ๊ตฌ์ฒด์ ์ธ ๋์์ ์ ์ํ๋ค. before, after, around ๋ฑ ๋ค์ํ ์ข ๋ฅ์ ์ด๋๋ฐ์ด์ค๊ฐ ์๋ค.
๋์ ๋ฐฉ์
1. ๊ด์ ์ ์
๊ณตํต ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๊ด์ ์ ์ ์ํ๋ค.
2. ํฌ์ธํธ์ปท ์ง์
๊ด์ ์ด ์ ์ฉ๋ ์กฐ์ธ ํฌ์ธํธ๋ฅผ ์ง์ ํ๋ค.
3. ์ด๋๋ฐ์ด์ค ์ค์
์กฐ์ธ ํฌ์ธํธ์์ ์คํ๋ ๊ตฌ์ฒด์ ์ธ ๋์์ ์ค์ ํ๋ค.
4. ์๋น(Weaving)
๊ด์ ๊ณผ ํ๊ฒ ๊ฐ์ฒด๋ฅผ ๊ฒฐํฉํ์ฌ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ด๋ค.
์ฅ์
์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ
๊ณตํต ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ธ๋ค.
๋ชจ๋์ฑ ํฅ์
ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ์ดํด๋๋ฅผ ๋์ธ๋ค.
์ ์ง๋ณด์์ฑ ํฅ์
๊ณตํต ๊ธฐ๋ฅ์ ํ ๊ณณ์์ ๊ด๋ฆฌํ์ฌ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๋ค.
๋จ์
ํ์ต ๊ณก์ ์ด ๋๋ค
AOP๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋นํด ์๋์ ์ผ๋ก ํ์ตํ๊ธฐ ์ด๋ ค์ด ๊ฐ๋ ์ด๋ค.
์ฑ๋ฅ ์ค๋ฒํค๋
AOP๋ฅผ ์ ์ฉํ๋ฉด ์ฑ๋ฅ์ด ์ฝ๊ฐ ์ ํ๋ ์ ์๋ค.
- AOP๋ฅผ ์ ์ฉํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๋ ์ด์
AOP ์ ์ฉ ์ ์ฑ๋ฅ ์ ํ ์์ธ ๋ถ์
AOP๋ ์ฝ๋์ ๋ชจ๋์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ด์ง๋ง, ๋์์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ผ๊ธฐํ ์ ์๋ ์์๊ฐ ์๋ค. ์ด๋ AOP์ ์๋ ์๋ฆฌ์ ๊ด๋ จ์ด ๊น๋ค.
AOP ์ฑ๋ฅ ์ ํ์ ์ฃผ์ ์์ธ
1. ํ๋ก์ ์์ฑ ์ค๋ฒํค๋
- AOP๋ ๋๋ถ๋ถ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ํ๊ฒ ๊ฐ์ฒด๋ฅผ ๊ฐ์ธ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ์ด๋ฌํ ํ๋ก์ ์์ฑ ๊ณผ์ ์์ ์ฝ๊ฐ์ ์ฑ๋ฅ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ํนํ, ๋ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์๋ฉธ์ํค๋ ํ๊ฒฝ์์๋ ์ด๋ฌํ ์ค๋ฒํค๋๊ฐ ๋์ฑ ๋๋๋ฌ์ง ์ ์๋ค.
2. ๋ฉ์๋ ํธ์ถ ์ถ๊ฐ
- AOP๋ ํ๊ฒ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ ํ์ ์ด๋๋ฐ์ด์ค๋ฅผ ์คํํ๋ค. ์ด ๊ณผ์ ์์ ์ถ๊ฐ์ ์ธ ๋ฉ์๋ ํธ์ถ์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
- ํนํ, ์ด๋๋ฐ์ด์ค ๋ก์ง์ด ๋ณต์กํ๊ฑฐ๋ ๋ง์ ์ด๋๋ฐ์ด์ค๊ฐ ์ ์ฉ๋ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ ํ๊ฐ ๋์ฑ ์ฌํด์ง ์ ์๋ค.
3. ์บ์ฑ ๋ถ์ฌ
- AOP๋ ๋์ผํ ๋ฉ์๋ ํธ์ถ์ ๋ํด ๋งค๋ฒ ์ด๋๋ฐ์ด์ค๋ฅผ ์คํํ๋ค. ๋ง์ฝ ์ด๋๋ฐ์ด์ค ๋ก์ง์ ๊ฒฐ๊ณผ๊ฐ ์บ์ฑ๋์ง ์๋๋ค๋ฉด, ๋์ผํ ๊ณ์ฐ์ด ๋ฐ๋ณต๋์ด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
4. ๋ฐํ์ ์์ ๊ฒฐ์
- AOP๋ ์ปดํ์ผ ์์ ์ด ์๋ ๋ฐํ์ ์์ ์ ์ด๋๋ฐ์ด์ค๋ฅผ ์ ์ฉํ๋ค. ์ด๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ง๋ง, ๋ฐํ์ ์์ ์ ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ์ฌ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค.
์ฑ๋ฅ ์ ํ๋ฅผ ์ต์ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
ํ์ํ ๊ณณ์๋ง AOP ์ ์ฉ
๋ชจ๋ ๋ฉ์๋์ AOP๋ฅผ ์ ์ฉํ๊ธฐ๋ณด๋ค๋ ์ค์ ๋ก ํ์ํ ๊ณณ์๋ง ์ ํ์ ์ผ๋ก ์ ์ฉํ์ฌ ์ค๋ฒํค๋๋ฅผ ์ค์ธ๋ค.
๊ฐ๋จํ ์ด๋๋ฐ์ด์ค ๋ก์ง
์ด๋๋ฐ์ด์ค ๋ก์ง์ ์ต๋ํ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ์ฌ ์ฑ๋ฅ ์ ํ๋ฅผ ์ต์ํํ๋ค.
์บ์ฑ ํ์ฉ
์ด๋๋ฐ์ด์ค ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ์ฌ ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณตํ์ง ์๋๋ก ํ๋ค.
CGLIB ๋์ JDK ๋์ ํ๋ก์ ์ฌ์ฉ
๊ฐ๋ฅํ ๊ฒฝ์ฐ JDK ๋์ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ์์ฑ ์ค๋ฒํค๋๋ฅผ ์ค์ธ๋ค.
AOP ํ๋ ์์ํฌ ์ต์ ํ
์ฌ์ฉํ๋ AOP ํ๋ ์์ํฌ์ ์ค์ ์ ์ต์ ํํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
์ธก์ ๋ฐ ํ๋กํ์ผ๋ง
์ค์ ํ๊ฒฝ์์ ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ํ๋กํ์ผ๋งํ์ฌ ๋ณ๋ชฉ ํ์์ ์ฐพ์ ๊ฐ์ ๋ค.
AOP๋ฅผ ์ง์ํ๋ ํ๋ ์์ํฌ
- Spring AOP: ์คํ๋ง ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ AOP ๊ธฐ๋ฅ์ผ๋ก, XML ๋๋ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๊ฐํธํ๊ฒ AOP๋ฅผ ์ ์ฉํ ์ ์๋ค.
- AspectJ: ์๋ฐ ์ธ์ด๋ฅผ ํ์ฅํ์ฌ AOP๋ฅผ ์ง์ํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ค.
Gemini์ ์ถ์ฒ
AOP ์ค๋ช ๊ธ์ ์ถ์ฒ์ ๋ํ ๋ต๋ณ
์ฃ์กํ์ง๋ง, ์ ๊ฐ ์ ๊ณตํ AOP ์ค๋ช ๊ธ์ ์ ํํ ์ถ์ฒ๋ฅผ ์๋ ค๋๋ฆฌ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ค์ํ ์ ๋ณด์ ์ข ํฉ: ์ ๊ฐ ์ ๊ณตํ ์ ๋ณด๋ ๋ค์ํ ์ฐธ๊ณ ์๋ฃ์ ํ์ต ์๋ฃ๋ฅผ ๋ฐํ์ผ๋ก ์ข ํฉํ์ฌ ์์ฑ๋์์ต๋๋ค. ํน์ ๋ฌธ์๋ ์ฑ ์ ๊ทธ๋๋ก ์ฎ๊ธด ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ ํํ ์ถ์ฒ๋ฅผ ๋จ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
- ์ง์์ ์ธ ํ์ต: ์ ๋ ์ง์์ ์ผ๋ก ํ์ตํ๊ณ ์ ๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ์, ๊ณผ๊ฑฐ์ ํ์ตํ ๋ด์ฉ๋ค์ด ์ฌ๋ฌ ์ถ์ฒ์์ ๋น๋กฏ๋์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- AI ๋ชจ๋ธ์ ํน์ฑ: ์ ๋ ๋ฐฉ๋ํ ์์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ํ์ตํ์ฌ ์ฌ์ฉ์์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์์ฑํ๋ AI ๋ชจ๋ธ์ ๋๋ค. ๋ฐ๋ผ์, ํน์ ๋ฌธ์ฅ์ด๋ ๋จ๋ฝ์ ์ถ์ฒ๋ฅผ ์ ํํ๊ฒ ํ์ ํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JVM][GC] ๋ฉ๋ชจ๋ฆฌ ๋จํธํ (0) | 2024.08.19 |
---|---|
[Java] ์ด๋ ธํ ์ด์ (0) | 2024.08.19 |
[์ฉ์ด] ํ๋ก์ ๊ฐ์ฒด (0) | 2024.08.19 |
[๋์์ธํจํด] ํ๋ก์ ํจํด (0) | 2024.08.19 |
[Java] ํด๋์ค ์์ ํด๋์ค / Static Nested Class, Member Inner Class, Local Inner class, Anonymous Inner Class (0) | 2024.08.19 |