Framework๋ ์ํํธ์จ์ด์ ๊ตฌ์ฒด์ ์ธ ๋ถ๋ถ์ ํด๋นํ๋ ์ค๊ณ์ ๊ตฌํ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ์ผ๋ จ์ ํ์
ํ๋ ํํ๋ก ํด๋์ค๋ค์ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
ex) ์๋์ฐจ์ ๋ผ๋๊ฐ ๋๋ ๊ฐํ์ผ๋ก ๋ ๊ป๋ฐ๊ธฐ
ํจ์จ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
-> ๊ฐ๋ฐํ๊ณ ์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒ์๋ถํฐ ์ ๋ถ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์๋ ์๋ก ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ ํต์ ์ด๋, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ ์ ์ฅ์์ ์ ์ฅํ๋ ๋ฑ์ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ๊ณตํจ์ผ๋ก์จ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ๋ก์ง์ ๊ฐ๋ฐํ๋ ๊ฒ์ ์ง์คํ ์ ์๋๋ก ํด์ค๋ค.
์ ํด์ง ๊ท์ฝ์ด ์์ด ์ ํ๋ฆฌ์ผ์ด์
์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
-> ์ ํด์ง ๊ท์ฝ์ ๋ง๊ฒ ์ฝ๋๋ฅผ ์์ฑํจ์ผ๋ก, ์ ์ง๋ณด์๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๋ฌธ์ ์ ์ ํ์
ํด ์์ ํ ์ ์์ผ๋ฉฐ, ๋น์ทํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ๋ ์ฝ๋์ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๊ณ ๊ธฐ๋ฅ์ ํ์ฅ ๋ํ ์ฝ๊ฒ ๊ฐ๋ฅํ๋ค.
๋ด๊ฐ ์ฌ์ฉํ๊ณ ์ ํ๋ Framework์ ๋ํ ํ์ต์ด ํ์ํ๋ค.
-> Framework์์ ์ ํ๋ ๊ท์ฝ๋ค์ ํ์ตํ ์๊ฐ์ด ํ์ํ๋ค.
์์ ๋กญ๊ณ ์ ์ฐํ ๊ฐ๋ฐ์ด ์ด๋ ต๋ค.
-> ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ Framework์ ๊ท์ฝ์ ๋ฒ์ด๋๊ธฐ ์ด๋ ต๋ค. ์ด๋ฏธ ๋ง๋ค์ด์ง ์ ํ๋ฆฌ์ผ์ด์
์์ Framework๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋, ์ ์ฐํ ๊ฐ๋ฐ์ ์ํด Framework๋ฅผ ์ฌ์ฉํ์ง ์๊ฒ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ๋ง์ ์๊ฐ๊ณผ ๋
ธ๋ ฅ์ด ํ์ํ๋ค.
Library๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ผ๋ จ์ ๋ฐ์ดํฐ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ฝ๋์ด๋ค.
-> ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋ ํ์ํ ๊ธฐ๋ฅ์ ๋ฏธ๋ฆฌ ๊ตฌํํด ๋์ ์งํฉ์ฒด
ex) ์๋์ฐจ ๋ฐํด, ์์ง...
Framework๋ฅผ ๊ต์ฒดํ๋ ์ผ์ ์ด๋ ต์ง๋ง, Library๋ ์ฝ๊ฒ ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๋ฉฐ ํ์ํ Library๋ค์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
=> Framework๋ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ก์ง์ ๊ฐ๋ฐํ๋ ๊ฒ์ ์ง์คํ๋๋ก ํด์ค๋ค.
=> Library๋ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ฆ์ ์ฃผ๋๊ถ์ด ๊ฐ๋ฐ์์๊ฒ ์๋ ๋ฐ๋ฉด, Framework๋ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ฆ์ ์ฃผ๋๊ถ์ด ๊ฐ๋ฐ์๊ฐ ์๋ Framework์ ์๋ค.
=> Framework๋ Library๋ฅผ ํฌํจํ๋ค.
IoC/DI, AOP, PSA๋ฅผ ํตํด ๋ฌ์ฑํ ์ ์๋ค.
'PO'๋ java๋ก ์์ฑํ๋ ์์ํ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
POJO ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ณธ์ ์ธ ๊ท์น
-> Java๋ Java์ ์คํ(์ฌ์)์ ์ ์๋ ๊ฒ ์ด์ธ์๋ ๋ค๋ฅธ ๊ธฐ์ ์ด๋ ๊ท์ฝ์ ์ฝ๋งค์ด์ง ์์์ผ ํ๋ค.
-> ํน์ ํ๊ฒฝ์ ์ข
์์ ์ด์ง ์์์ผ ํ๋ค.
ํน์ ํ๊ฒฝ์ด๋ ๊ธฐ์ ์ ์ข ์์ ์ด์ง ์์ผ๋ฉด ์ฌ์์ฉ์ด ๊ฐ๋ฅํ๊ณ , ํ์ฅ ๊ฐ๋ฅํ ์ ์ฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
์ ์์ค ๋ ๋ฒจ์ ๊ธฐ์ ๊ณผ ํ๊ฒฝ์ ์ข ์์ ์ธ ์ฝ๋๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์ ์ ๊ฑฐํจ์ผ๋ก์จ ์ฝ๋๊ฐ ๊น๋ํด์ง๋ค.
์ฝ๋๊ฐ ๊น๋ํด์ง๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น ํ๊ธฐ๋ ์๋์ ์ผ๋ก ์ฝ๋ค.
ํน์ ๊ธฐ์ ์ด๋ ํ๊ฒฝ์ ์ข ์์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ํ ์คํธ ์ญ์ ๋จ์ํด์ง๋ค.
๊ฐ์ฒด์งํฅ์ ์ธ ์ค๊ณ๋ฅผ ์ ํ ์์ด ์ ์ฉํ ์ ์๋ค.
์ ํ๋ฆฌ์ผ์ด์ ํ๋ฆ์ ์ฃผ๋๊ถ์ด ๋ค๋ฐ๋๋ ๊ฒ์ด๋ค.
Spring์ IoC์ ๊ฐ๋ ์ด ์ ์ฉ๋๋๋ก ๋์์ฃผ๋ ๊ฒ์ DI์ด๋ค.
๊ด์ฌ ์งํฅ ํ๋ก๊ทธ๋จ
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ๋ค์ ๋ํ ๊ด์ฌ์ฌ๋ฅผ ๊ณตํต ๊ด์ฌ ์ฌํญ(=๋ถ๊ฐ์ ์ธ ๊ด์ฌ ์ฌํญ)์ด๋ผ๊ณ ํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํ ํต์ฌ ๋ก์ง์ ๋ํ ๊ด์ฌ์ฌ๋ฅผ ํต์ฌ ๊ด์ฌ ์ฌํญ์ด๋ผ๊ณ ํ๋ค.
=> AOP๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ์ ๋ฌด ๋ก์ง์์ ๋ก๊น , ๋ณด์, ํธ๋์ญ์ ๊ฐ์ ๊ณตํต ๊ธฐ๋ฅ ๋ก์ง๋ค์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค.
=> ํด๋ผ์ด์ธํธ๊ฐ ์ถ์ํ๋ ์์ ํด๋์ค๋ฅผ ์ผ๊ด๋๊ฒ ๋ฐ๋ผ๋ณด๋ฉฐ ํ์ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก PSA์ ๊ธฐ๋ณธ ๊ฐ๋ ์ด๋ค.
=> ์ ํ๋ฆฌ์ผ์ด์ ์์ ํน์ ์๋น์ค๋ฅผ ์ด์ฉ ํ ๋, ์๋น์ค์ ๊ธฐ๋ฅ์ ์ ๊ทผํ๋ ๋ฐฉ์ ์์ฒด๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํ๋ฉด์ ๊ธฐ์ ์์ฒด๋ฅผ ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
Spring์ ๋ํด์ ๋ค์ด๋ง ๋ณด๋ค๊ฐ ์ด๋ฒ์ ์ฒ์์ผ๋ก ๊ณต๋ถํ๊ฒ ๋์๋๋ฐ ๋ญ๊ฐ ์ ๊ฒ ๊ฐ์ผ๋ฉด์๋ ๋ชจ๋ฅด๊ฒ ๋ค,,, ๊ทธ๋๋ Spring์ ๋ฐฐ์์ ์ตํ๋ฉด ํจ์ฌ ํธํ ๊ฒ ๊ฐ๋ค๋ ๋๋์ด ๋ค์๋ค..! ๋ค์์ ๋ค์ ๋ณผ ๋๋ ๋ค ์ดํดํ๊ธฐ๋ฅผ๐