Last updated
Last updated
ํน์ ํ ํจ์ ํธ์ถ ์ ์ด๋ ํ์ ๊ณตํต์ ์ธ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ค. (๋ก๊น , ํธ๋์ญ์ , ์ธ์ฆ)ใ
์ฌ๋ฌ ํด๋์ค๋ ๊ธฐ๋ฅ์ ๊ฑธ์ณ์ ์๋ ๊ด์ฌ์ฌ, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ๋ค์ ๋ชจ๋ํํ๋ ๊ฒ. ๊ฐ์ฅ ๋ง์ด ํ์ฉ๋๋ ๋ถ๋ถ์ @Transactional ๊ธฐ๋ฅ
AOP์์ ์ค์ ๋ก ์ ์ฉํ๋ ๊ธฐ๋ฅ (๋ก๊น , ํธ๋์ญ์ , ์ธ์ฆ ๋ฑ)
Aspect ๊ฐ ์คํ๋ ์ ์๋ ์ฐ๊ฒฐ ํฌ์ธํธ
Join point ์ค์์ Aspect ๋ฅผ ์ ์ฉํ ๋์์ ๋ฝ์ ์กฐ๊ฑด์
Advice๊ฐ ์ ์ฉ๋ ๋์ ์ค๋ธ์ ํธ
๋์ ์ค๋ธ์ ํธ์ Aspect ๋ฅผ ์ ์ฉํ๋ ๊ฒฝ์ฐ Advice ๋ฅผ ๋ง๋ถ์ด๊ธฐ ์ํด ํ๋ ์์ ์ฃผ๋ก CGLIB (Code Generation Library, ์คํ ์ค์ ์ค์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ) ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ฑ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
Advice ๋ฅผ ๋น์ฆ๋์ค ๋ก์ง ์ฝ๋์ ์ฝ์ ํ๋ ๊ฒ.
AOP๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๊ผญ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ Spring AOP ๋ก๋ ๋ค์ํ ๊ธฐ๋ฒ์ AOP๋ฅผ ์ฌ์ฉํ ์ ์์. (Pointcut ๋ฑ)
ํด๋น Aspect์ Advice ๊ฐ ์ ์ฉ๋ Join point ๋ฅผ ์ฐพ๊ธฐ ์ํ ํจํด ๋๋ ์กฐ๊ฑด ์์ฑ
ํฌ์ธํธ ์ปท ํํ์์ด๋ผ๊ณ ๋ถ๋ฆ
ํฌ์ธํธ ์ปท๋ค์ ํ์ฉํ์ฌ ํฌ์ธํธ์ปท์ ์ /ํ/์ฃผ๋ณ์์ ์คํ๋ ์ก์ ์ ์ ์ํจ
dataAccessOperation() ์ด๋ผ๋ ๋ฏธ๋ฆฌ ์ ์๋ ํฌ์ธํธ ์ปท์ ๋ฐ๋ก ์ ์ doAccessCheck() ๊ฐ ์คํ
dataAccessOperation() ๋ผ๋ ๋ฏธ๋ฆฌ ์ ์๋ ํฌ์ธํธ์ปท์์ return ์ด ๋ฐ์๋ ํ ์คํ
businessService() ๋ผ๋ ํฌ์ธํธ์ปท์ ์ /ํ์ ํ์ํ ๋์์ ์ถ๊ฐํจ