- Spring Framework ์ค์ต ํ๊ฒฝ ์ค์
- Spring Framework ์๊ฐ
- Spring Framework ํน์ง
- framework vs library
- Spring Framework vs ๊ธฐ์กด ๋ค๋ฅธ ๊ธฐ์ ๋ค
๐ฑ aspect
= ์ ํ๋ฆฌ์ผ์ด์
์ ํ์ํ ๊ธฐ๋ฅ ์ค ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ ๊ณตํต ๊ธฐ๋ฅ์ ๋ํ ๊ด์ฌ/๊ด์ โ ๊ณตํต/ํก๋จ(cross-cutting)/๋ถ๊ฐ์ vs ํต์ฌ(core) ๊ธฐ๋ฅ/๊ด์ฌ์ฌํญ(concerns) ๋ถ๋ฆฌ + ๋ถ๋ฆฌํ ๋ถ๊ฐ ๊ธฐ๋ฅ(advice
) ๋ฐ ๊ทธ ๊ธฐ๋ฅ๋ค์ ์ด๋์ ์ ์ฉํ ์ง ์ ํ/์ ์/๊ฒฐ์ (PointCut
)ํด์ ํ๋์ ๋ชจ๋๋ก ๋ง๋ฆ -> ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ๋ผ๋ณด๋ ํ๋์ ๊ด์ = ํก๋จ ๊ด์ฌ์ฌ
- ํต์ฌ ๊ธฐ๋ฅ = ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ ๊ณ ์ ์ ๊ธฐ๋ฅ(์ ๋ฌด ๋ก์ง ๋ฑ ํฌํจ), ์ ๋ฌด ๊ด๋ จ ์ฝ๋
- ๊ณตํต/ํก๋จ/๋ถ๊ฐ์ ๊ธฐ๋ฅ = ์ ๋ฌด์๋ ๊ด๋ จ ์์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ์ธ/ํต์ฌ ๊ธฐ๋ฅ์ ๋์์ฃผ๋/๋ณด์กฐํ๊ธฐ ์ํด ์ ๊ณต๋๋ ๋ถ๊ฐ ๊ธฐ๋ฅ โ ๋จ๋ ์ผ๋ก(x) ํต์ฌ ๊ธฐ๋ฅ๊ณผ ํจ๊ป(o) + ๋ณดํต ์ฌ๋ฌ ํด๋์ค์ ๊ฑธ์ณ์ ํจ๊ป ์ฌ์ฉ๋จ e.g. ํธ๋์ญ์ , ๋ณด์, ๋ก๊น (๋ก๊ทธ ์ถ์ ) ๋ฑ
๐ฑ ๋ชฉ์ , ํ์ํ ์ด์ = ๊ณตํต ๊ธฐ๋ฅ์ ํต์ฌ ๊ธฐ๋ฅ์ผ๋ก๋ถํฐ ๊น๋ํ๊ฒ ๋ถ๋ฆฌ/์ฒ๋ฆฌ, OOP์ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ โ OOP์ ๋ถ์กฑํ ๋ถ๋ถ ๋ณด์กฐ โ ์ฌ๋ฌ ํด๋์ค/๊ฐ์ฒด ๊ฐ์ ๋ฐ์ํ๋ ๋ฌธ์ /๊ธฐ๋ฅ(e.g. ํธ๋์ญ์ )์ ๋ชจ๋ํ โ ๊ณตํต ๊ธฐ๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ์ ์ฉ โ ์ํํธ์จ์ด์ ๋ณ๊ฒฝ ์ง์ ๋จ์ผํ
OOP์ ๋ถ์กฑํ ๋ถ๋ถ
1. ๋น์ฆ๋์ค/service ํด๋์ค์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๊ณตํต ๊ธฐ๋ฅ์ ๊ณต์กด โ ๋ฉ์๋์ ๋ณต์ก๋ ์ฆ๊ฐ โ ๋น์ฆ๋์ค ์ฝ๋ ํ์ ์ด ์ด๋ ค์
2. ๊ณตํต ๊ธฐ๋ฅ์ ๋ถํน์ ๋ค์ ํด๋์ค/๋ฉ์๋์์ (๋ถํ์ํ๊ฒ) ๋ฐ๋ณต์ ์ผ๋ก ๊ตฌํ/์ ์ฉ = ๋ฒ๊ฑฐ๋กญ๊ณ ์ค๋ณต ์ฝ๋ ๋ฐ์ โ ๊ณตํต ๊ธฐ๋ฅ์ ๋ชจ๋ํ๊ฐ ์ด๋ ค์ + ๊ณตํต ๊ธฐ๋ฅ ์์ ํ์ ์ ์ฌ์ฉ๋๋ ํด๋์ค๋ฅผ ์ผ์ผ์ด ์ฐพ์์ ์์ ํด์ผ ํจ
๋ชจ๋ํ์ ํต์ฌ ๋จ์ = OOP์์๋ ํด๋์ค vs AOP์์๋ ๊ด์ /
aspect
- Java Servlet
- Servlet Container
- ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น SOLID
- ํด๋์ค ๋ค์ด์ด๊ทธ๋จ ๊ทธ๋ ค๋ณด๊ธฐ
- AOP๋ก ์ ์ฉ ํ ๋งํ ๊ณตํต ๊ธฐ๋ฅ์๋ ๋ญ๊ฐ ์์๊น?
- Child ์ถ์ ํด๋์ค์ ์ถ๊ฐํ ์ ์๋, ์ผ๋ฐ์ ์ธ ์์ฑ/๋์ ์ถ๊ฐํด๋ณด๊ธฐ