Proxy
Last updated
Last updated
Proxy ํจํด์ UML๋ก ์ดํด๋ณด๋ฉด, ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์๋ ์ค์ ์์ฒญ์ฒ๋ฆฌ ๊ฐ์ฒด(real subject)์ ํ๋ก์๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ํ๋ก์ ๊ฐ์ฒด๊ฐ ์ค์ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ตฌ์กฐ์ด๋ค.
์ฌ๊ธฐ์์ Proxy๋ target์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ฑฐ๋ ์ถ๊ฐํ์ง ์์ผ๋ฉฐ, ๋์ ํด๋ผ์ด์ธํธ๊ฐ target์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๋ณ๊ฒฝํด์ค๋ค. ์ฆ, target์ ๊ธฐ๋ฅ ์์ฒด์๋ ๊ด์ฌํ์ง ์์ผ๋ฉด์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํด์ฃผ๋ Proxy๋ฅผ ์ด์ฉํ๊ฒ์ด๋ค.
์ฆ, ํ๋ก์๋ ํด๋ผ์ด์ธํธ์ ์ฌ์ฉ ๋์ ์ฌ์ด์ ๋๋ฆฌ ์ญํ ์ ๋งก์ object๋ฅผ ๋๋ ๋ฐฉ๋ฒ์ ์ด์นญ ํ๋ ๊ฒ์ด๋ฉฐ, Proxy ํจํด์ target์ ๋ํ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ์ดํ๋ ค๋ ๋ชฉ์ ์ ๊ฐ์ง๊ณ Proxy๋ฅผ ์ฌ์ฉํ๋ ํจํด์ด๋ค.
์ค์ ๋ก์ง๊ณผ ์ธ๊ณผ๊ด๊ณ ์ฒ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์์ผ๋ฉฐ, ์ง์ฐ, ์ด๊ธฐํ ๋ฑ์ ๊ธฐ๋ฒ๋ ์ค์ ๋ก์ง์ ๋ด๋นํ๋ ๊ฐ์ฒด๋ฅผ ์์ ํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
Spring AOP์์๋ Dynamic Proxy๊ธฐ๋ฒ์ ์ด์ฉํด AOP๋ฅผ ๊ตฌํํ๋ค.
target์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ฐํ์ ์ ๋ค์ด๋๋ฏนํ๊ฒ ๋ถ์ฌํด์ฃผ๊ธฐ ์ํด Proxy๋ฅผ ์ฌ์ฉํ๋ ํจํด์ด๋ค. ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์์ ์์ด ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํ์ฌ ๊ฐ์ฒด๋ฅผ wrappingํ๋ ๊ฒ์ด๋ค.