[Spring] MVC ํจํด์ด๋?
๐ MVC ํจํด
MVC๋?
Model, View, Controller์ ์ฝ์
ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ , ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ ๊ตฌ์ฑ์์๋ฅผ ์ธ๊ฐ์ง์ ์ญํ ๋ก ๊ตฌ๋ถํ ํจํด
- ์ฌ์ฉ์์ Request(์์ฒญ)๋ฅผ Controller๊ฐ ๋ฐ๋๋ค.
- Controller๋ Service์์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ ํ ๊ฒฐ๊ณผ๋ฅผ Model์ ๋ด๋๋ค.
- Model์ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์๊ฐ์ ์์ ์ถ๋ ฅ์ ๋ด๋นํ๋ View๋ฅผ ์ ์ดํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ค.
- ๋น์ฆ๋์ค ๋ก์ง์ด๋?
- ์ํํธ์จ์ด ๊ณตํ์์ ๋๋ฉ์ธ, ๋น์ฆ๋์ค๋ผ๋ ๋ง์, '์ํํธ์จ์ด๊ฐ ํ๊ณ ์ํ๋ ํ์ค ์ธ์์ ๋ฌธ์ '๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
(์ํํธ์จ์ด๊ฐ ์กด์ฌํ๋ ์ด์ , ๋ชฉ์ ) - '๋๋ฉ์ธ ๋ก์ง'์ด๋ '๋น์ฆ๋์ค ๋ก์ง' ์ด๋ผ๊ณ ๋งํ ๋๋, ๊ทธ 'ํ์ค ์ธ์์ ๋ฌธ์ '๋ฅผ ํด๊ฒฐํ๋ ์ฝ๋๋ฅผ ์๋ฏธ
- ์ํํธ์จ์ด ๊ณตํ์์ ๋๋ฉ์ธ, ๋น์ฆ๋์ค๋ผ๋ ๋ง์, '์ํํธ์จ์ด๊ฐ ํ๊ณ ์ํ๋ ํ์ค ์ธ์์ ๋ฌธ์ '๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๋ง์ฝ MVC ๊ฐ๋ ์ Web์์ ์ฌ์ฉํ๋ค๊ณ ํ๋ฉด, ์ด๋ ๊ฒ ๋ ๊ฒ์ด๋ค.
- User: ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์ ์ ์ํ๋ค.
- Manipulates: Controller๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์น ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด Model์ ํธ์ถํ๋ค.
- Updates: Model์ ๋น์ฆ๋์ค ๋ก์ง์ ํตํด DB ๋ฐ ํ์ผ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค. ์ดํ Controller๋ Model์๊ฒ ๋ฐํ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ View์ ๋ฐ์ํ๋ค.
- Sees: ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ View๊ฐ ์ฌ์ฉ์์๊ฒ ์น ํ์ด์ง๋ฅผ ์ถ๋ ฅํ์ฌ ๋ณด์ฌ์ค๋ค.
Model(๋ชจ๋ธ)
์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ณด, ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ธ๋ค.
(๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ฒ์ ์ ์ํ๋ ์์, ์ด๊ธฐํ๊ฐ, ๋ณ์ ๋ฑ ์ ๋ณด๋ค์ ๊ฐ๊ณต์ ์ฑ
์์ง๋ ์ปดํฌ๋ํธ(๋
๋ฆฝ์ ์ธ ๋ชจ๋))
Controller์๊ฒ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณต(์กฐ์)ํ๋ ์ญํ ์ ์ํํ๋ค. ์ฆ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ๋ถ๋ถ์ ๋ด๋นํ๋ฉฐ ๊ฐ๊ณผ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ ๊ฐ์ฒด์ด๋ค.
Model์ด ๊ฐ์ง๋ ๊ท์น
- ์ฌ์ฉ์๊ฐ ํธ์งํ๊ธธ ์ํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
- View๋ Controller์ ๋ํด์ ์ด๋ค ์ ๋ณด๋ ์์ง ๋ง์์ผ ํ๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด, ๋ณ๊ฒฝ ํต์ง์ ๋ํ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๊ตฌํํด์ผ๋ง ํ๋ค.
View(๋ทฐ)
View๋ ์ ๋ ฅ๊ฐ์ด๋ ์ฒดํฌ๋ฐ์ค ๋ฑ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ๋ํ๋ธ๋ค.
์ด๋ Controller์๊ฒ ๋ฐ์ Model์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์ญํ ์ ์ํํ๋ค.
์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ๋ฉด์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
View๊ฐ ๊ฐ์ง๋ ๊ท์น
- Model์ด ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํด์๋ ์๋๋ค.
- Model์ด๋ Controller๋ฅผ ์๊ณ ์์ ํ์๊ฐ ์๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ๋ณ๊ฒฝํต์ง์ ๋ํ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๊ตฌํํด์ผ๋ง ํ๋ค.
Controller(์ปจํธ๋กค๋ฌ)
Controller๋ Model๊ณผ View ์ฌ์ด์์ ๋ฐ์ดํฐ ํ๋ฆ์ ์ ์ดํ๋ค.
์ฌ์ฉ์๊ฐ ์ ๊ทผํ URL์ ๋ฐ๋ผ ์์ฒญ์ ํ์ ํ๊ณ URL์ ์ ์ ํ Method๋ฅผ ํธ์ถํ์ฌ Service์์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
์ด ํ ๊ฒฐ๊ณผ๋ฅผ Model์ ์ ์ฅํ์ฌ View์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ์ํํ๋ค. ๊ฒฐ๊ตญ Controller๋ Model๊ณผ View์ ์ญํ ์ ๋ถ๋ฆฌํ๋ ์ค์ํ ์์์ด๋ค.
Controller๊ฐ ๊ฐ์ง๋ ๊ท์น
- Model์ด๋ View์ ๋ํด์ ์๊ณ ์์ด์ผ ํ๋ค.
- Model์ด๋ View์ ๋ณ๊ฒฝ์ ๋ชจ๋ํฐ๋ง ํด์ผ ํ๋ค.
Model๊ณผ View๋ ๊ฐ๊ฐ์ ์ญํ ์ ์ถฉ์คํ์ง๋ง Controller๋ Model๊ณผ View์ ํ๋ฆ์ ์ ์ดํ๊ธฐ ์ํ ์ญํ ์ด ๋์ฑ ์ค์ํ๋ค.