-
๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น - SOLID๊ฐ๋ฐ/Spring Boot 2022. 5. 24. 01:02
SOLID๋ ๋ค์์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น์ ๋๋ฌธ์์ด๋ก ํํํ ๋ง์ด๋ค. ํด๋น ์์น์ ์์ง๋๋ ๋์ด๊ณ (High Cohesion), ๊ฒฐํฉ๋๋ ๋ฎ์ถ๋ผ(Loose Coupling)๋ ๊ณ ์ ์์น์ ๊ฐ์ฒด ์งํฅ์ ๊ด์ ์์ ์ฌ์ ๋ฆฝํ ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
- SRP (Single Responsibility Principle) : ๋จ์ผ ์ฑ ์ ์์น
- OCP (Open Closed Principle) : ๊ฐ๋ฐฉ ํ์ ์์น
- LSP (Liskov Substitution Principle) : ๋ฆฌ์ค์ฝํ ์นํ ์์น
- ISP (Interface Segregation Priniciple) : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ๋ฒ์น
- DIP (Dependency Inversion Principle) : ์์กด ์ญ์ ์์น๊ฒฐํฉ๋?
๊ฒฐํฉ๋๋ ๋ชจ๋(ํด๋์ค) ๊ฐ์ ์ํธ ์์กด ์ ๋๋ก์, ๊ฒฐํฉ๋๊ฐ ๋ฎ์ผ๋ฉด ๋ชจ๋ ๊ฐ์ ์ํธ ์์กด์ฑ์ด ์ค์ด๋ค์ด ๊ฐ์ฒด์ ์ฌ์ฌ์ฉ์ด๋ ์์ , ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
์์ง๋?
์์ง๋๋ ํ๋์ ๋ชจ๋ ๋ด๋ถ์ ์กด์ฌํ๋ ๊ตฌ์ฑ ์์๋ค์ ๊ธฐ๋ฅ์ ๊ด๋ จ์ฑ์ผ๋ก, ์์ง๋๊ฐ ๋์ ๋ชจ๋์ ํ๋์ ์ฑ ์์ ์ง์คํ๊ณ ๋ ๋ฆฝ์ฑ์ด ๋์์ ธ ์ฌ์ฌ์ฉ์ด๋ ๊ธฐ๋ฅ์ ์์ , ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
SOLID๋ ์ ํ์ด ์๋ ๊ฐ๋ ์ด๋ค. ๋ฐ๋ผ์ ๋ณด๋ ์ฌ๋์ ๊ด์ ์ ๋ฐ๋ผ ์ ์ ์ฉ๋๋์ง ์๋์ง ์ ๋งค๋ชจํธํ๊ฑฐ๋ ๋ค๋ฅด๊ฒ ํด์๋ ์ ์๋ ์์ง๊ฐ ์์ง๋ง, ์ด๋ฅผ ์ ๋ น์ฌ๋ด ์ํํธ์จ์ด๋ฅผ ๋ง๋ ๋ค๋ฉด, ๊ทธ๋ ์ง ์์ ์ํํธ์จ์ด์ ๋นํด ์๋์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฝ๊ณ , ๋ฆฌํฉํฐ๋ง๊ณผ ์ ์ง๋ณด์๊ฐ ์์ํ ๋ฟ๋ง ์๋๋ผ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ ์ฐํ๋ค.
์ด๋ฌํ SOLID๋ ์ดํ์ ์๊ฐํ ๋์์ธ ํจํด์ ๋ผ๋์ด์ ์คํ๋ง ํ๋ ์์ํฌ์ ๊ทผ๊ฐ์ด๊ธฐ๋ ํ๋ค.
๐ก SRP - ๋จ์ผ ์ฑ ์ ์์น
์ด๋ค ํด๋์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ์ด์ ๋ ์ค์ง ํ๋๋ฟ์ด์ด์ผ ํ๋ค.
๋ก๋ฒํธ C. ๋งํด๊ฐ๋จํ ์๋ฅผ ๋ค์๋ฉด, ๊ฐ์์ง๋ผ๋ ํด๋์ค๊ฐ ์์ ๋, ์๋ณ๋ณด๋ค ๋ผ๋ ๋ฉ์๋์์ if ๋ฌธ์ ํตํด ๋จ์์ธ๊ฒฝ์ฐ์ ์ฌ์์ธ ๊ฒฝ์ฐ๋ฅผ ๋๋ ์ ์๋ณ์ ๋ณด๋ ๋ฐฉ์์ ๋ค๋ฅด๊ฒ ์จ์คฌ๋ค๊ณ ๊ฐ์ ์ ํด๋ณด์.
class ๊ฐ์์ง { final static Boolean ์์ปท = true; final static Boolean ์์ปท = false; Boolean ์ฑ๋ณ; void ์๋ณ๋ณด๋ค() { if(this.์ฑ๋ณ == ์์ปท) { //ํ์ชฝ ๋ค๋ฆฌ๋ฅผ ๋ค๊ณ ์๋ณ์ ๋ณธ๋ค. } else { //๋ท๋ค๋ฆฌ ๋ ๊ฐ๋ฅผ ๊ตฝํ ์์ ์์ธ๋ก ์๋ณ์ ๋ณธ๋ค. } } }
์ด๋ฐ ๊ฒฝ์ฐ ์๋ณ๋ณด๋ค() ๋ฉ์๋๊ฐ ์์ปท ๊ฐ์์ง์ ํ์์ ์์ปท ๊ฐ์์ง์ ํ์๋ฅผ ๋ชจ๋ ๊ตฌํํ๋ ค๊ณ ํ๊ธฐ์ ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐฐํ๊ณ ์๋ ๊ฒ์ด๋ค. ํนํ ์ด๋ฐ ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํ if๋ฌธ์ ๋ํ์ ์ธ ๊ฒฝ์ฐ๋ผ๊ณ ํ ์ ์๋ค.
์ด๊ฒ์ ๋จ์ผ ์ฑ ์ ์์น์ ์ ์ฉํด ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค ์ ์๋ค.
abstract class ๊ฐ์์ง { abstract void ์๋ณ๋ณด๋ค() } class ์์ปท๊ฐ์์ง extends ๊ฐ์์ง { void ์๋ณ๋ณด๋ค() { //ํ์ชฝ ๋ค๋ฆฌ๋ฅผ ๋ค๊ณ ์๋ณ์ ๋ณธ๋ค. } } class ์์ปท๊ฐ์์ง extends ๊ฐ์์ง { void ์๋ณ๋ณด๋ค() { //๋ท๋ค๋ฆฌ ๋ ๊ฐ๋ฅผ ๊ตฝํ ์์ ์์ธ๋ก ์๋ณ์ ๋ณธ๋ค. } }
๐๐ปโ๏ธ ๋จ์ผ ์ฑ ์ ์์น๊ณผ ๊ฐ์ฒด ์งํฅ 4๋ ํน์ฑ์ ์ด๋ป๊ฒ ๊ฒฐ๋ถ๋ผ ์์๊น?
๋ชจ๋ธ๋ง ๊ณผ์ ์ ๋ด๋นํ๋ ์ถ์ํ์์ ์ ์ ์๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ๊ณ๋ฅผ ์ ํ๊ณ , ์ถ์ํ๋ฅผ ํตํด ํด๋์ค๋ค์ ์ ๋ณํ๊ณ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ค๊ณํ ๋ ๋ฐ๋์ ๋จ์ผ ์ฑ ์ ์์น์ ๊ณ ๋ คํ๋ ์ต๊ด์ ๋ค์ด์. ๊ทธ๋ฆฌ๊ณ ๋ฆฌํฉํฐ๋ง์ ํตํด ์ฝ๋๋ฅผ ๊ฐ์ ํ ๋๋ ๋จ์ผ ์ฑ ์ ์์น์ ์ ์ฉํ ๊ณณ์ด ์๋ ์ง ๊ผผ๊ผผํ ์ดํผ์.
๐ก OCP - ๊ฐ๋ฐฉ ํ์ ์์น
์ํํธ์จ์ด ์ํฐํฐ(ํด๋์ค, ๋ชจ๋, ํจ์ ๋ฑ)๋ ํ์ฅ์ ๋ํด์๋ ์ด๋ ค ์์ด์ผ ํ์ง๋ง
๋ณ๊ฒฝ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํ๋ค.
๋ก๋ฒํธ C. ๋งํด์์ ๋ฌธ์ฅ์ ์กฐ๊ธ ๋ ์์ญํด ๋ณด๋ฉด "์์ ์ ํ์ฅ์๋ ์ด๋ ค ์๊ณ , ์ฃผ๋ณ์ ๋ณํ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํ๋ค." ์ ๋๋ก ์์ญํด ๋ณผ ์ ์๊ฒ ๋ค.
ํ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด์๋ฉด, JDBC๋ฅผ ํ๋ฒ ๋ ์ฌ๋ ค๋ณด์. JDBC๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค๋ผํด์์ MYSQL๋ก ๋ฐ๋๋๋ผ๋ Connection์ ์ค์ ํ๋ ๋ถ๋ถ ์ธ์๋ ๋ฐ๋ก ์์ ํ ํ์๊ฐ ์๋ค. Connection ์ค์ ๋ถ๋ถ์ ๋ณ๋์ ์ค์ ํ์ผ๋ก ๋ถ๋ฆฌํด๋๋ฉด ํด๋ผ์ด์ธํธ ์ฝ๋๋ ๋จ ํ์ค๋ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ค. ์ด๊ฒ์ ๋ณด๋ฉด ์ค๋ผํด์ MYSQL๋ก ๊ต์ฒดํ๋ค๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ ์ ํ์ฅ์๋ ์ด๋ ค ์์ง๋ง, ์ค๋ผํด์ MYSQL๋ก ๊ต์ฒดํ๋๋ผ๋ JDBC ์ธํฐํ์ด์ค๋ผ๊ณ ํ๋ ์์ถฉ ์ฅ์น๋ก ์ธํด ๋ณํ์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฏ๋ก, ๋ณํ์ ๋ซํ์๋ค๊ณ ํ ์ ์๋ ๊ฒ์ด๋ค.
๊ฐ๋ฐฉ ํ์ ์์น์ ๋ฐ๋ฅด์ง ์๋๋ค๊ณ ํด์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ์ ์๋์ง๋ง, ๋ฌด์ํ๊ณ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ธ ์ ์ฐ์ฑ, ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด์์ฑ ๋ฑ์ ์ป์ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฐ๋์ ์ง์ผ์ผ ํ ์์น์ด๋ค.
๐ก LSP - ๋ฆฌ์ค์ฝํ ์นํ ์์น
์๋ธ ํ์ ์ ์ธ์ ๋ ์์ ์ ๊ธฐ๋ฐ ํ์ (base type)์ผ๋ก ๊ต์ฒดํ ์ ์์ด์ผ ํ๋ค.
๋ก๋ฒํธ C. ๋งํด๊ฐ์ฒด ์งํฅ์ ์์์ ๋ค์์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
- ํ์ ํด๋์ค is a kind of ์์ ํด๋์ค - ํ์ ๋ถ๋ฅ๋ ์์ ๋ถ๋ฅ์ ํ ์ข ๋ฅ๋ค.
- ๊ตฌํ ํด๋์ค is able to ์ธํฐํ์ด์ค - ๊ตฌํ ๋ถ๋ฅ๋ ์ธํฐํ์ด์คํ ์ ์์ด์ผ ํ๋ค.์ ๋๊ฐ์ ๋ฌธ์ฅ๋๋ก ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ด๋ผ๋ฉด ์ด๋ฏธ ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์ ์งํค๊ณ ์๋ค๊ณ ํ ์ ์๋ค. ์ ๋ฌธ์ฅ๋๋ก ๊ตฌํ๋์ง ์์ ์ฝ๋๊ฐ ์กด์ฌํ ์ ์๋ ๋ฐ, ๋ฐ๋ก ์์์ด ์กฐ์ง๋๋ ๊ณ์ธต๋ ํํ๋ก ๊ตฌ์ถ๋ ๊ฒฝ์ฐ๋ค. ์๋ฅผ ๋ค์ด ์๋ฒ์ง๋ฅผ ์์ ํด๋์ค๋ก ํ๋ ๋ธ์ด๋ผ๋ ํ์ ํด๋์ค๊ฐ ์๋ค๊ณ ํ์. ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ๋ฐ๋ก ์ ํ์ ์ธ ๊ณ์ธต๋ ํํ์ด๋ฉฐ, ๊ฐ์ฒด ์งํฅ์ ์์์ ์๋ชป ์ ์ฉํ ์์ด๋ค. ๋ณดํต ์์์ ๋ถ๋ชจ ๊ฐ์ฒด์ ์์๊ฐ์ฒด๋ก ๋น์ ๋ฅผ ํ๋ฉฐ ์๊ธฐ๋ ์คํด์ด๋ค.
์๋ฒ์ง ์ถํฅ์ด = new ๋ธ();
๋ฑ ๋ด๋ ์ด์ํ๋ค. ๋ธ์ ํ๋ ๋ณ์์ ์ด๋ฆ์ ์ถํฅ์ด๋ผ ํ ๊ฒ ๊น์ง๋ ์ข์๋ฐ, ์๋น ์ ์ญํ ์ ๋งก๊ธฐ๊ณ ์๋ ์ ์ด๋ค.
๋ฐ๋๋ก ๋ถ๋ฅ๋์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํด๋ณด์.
๋๋ฌผ ๋ฝ๋ก๋ก = new ํญ๊ท();
๋ ผ๋ฆฌ์ ์ธ ํ ์ด ์๋ค. ํญ๊ท ํ ๋ง๋ฆฌ๊ฐ ํ์ด๋ ๋ฝ๋ก๋ก๋ผ ์ด๋ฆ์ ์ง๊ณ ๋๋ฌผ์ ํ์๋ฅผ ํ๊ฒ ํ๋๋ฐ ์ ํ ์ด์ํจ์ด ์๋ค.
์ฆ, ์๋ฒ์ง - ๋ธ ๊ตฌ์กฐ(๊ณ์ธต๋/์กฐ์ง๋)๋ ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์๋ฐฐํ๊ณ ์๋ ๊ฒ์ด๋ฉฐ, ๋๋ฌผ -ํญ๊ท (๋ถ๋ฅ๋)๋ ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ๋ง์กฑํ๋ ๊ฒ์ด๋ค.
๐ก ISP - ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ผ๋ฉด ์ ๋๋ค.
๋ก๋ฒํธ C. ๋งํด๋จ์๋ผ๋ ํด๋์ค๊ฐ ์๋ค๊ณ ์๋ฅผ ๋ค์ด๋ณด์. ์ด ๋จ์ ํด๋์ค๋ ๋จ์์น๊ตฌ๋ก์์ ๊ธฐ๋ ์ผ์ฑ๊ธฐ๊ธฐ(), ํค์คํ๊ธฐ() ๋ผ๋ ํ์๋ฅผ ํ๊ณ , ์๋ค๋ก์ ํจ๋ํ๊ธฐ(), ์๋งํ๊ธฐ() ํ์๋ฅผ ํ ์ ์๋ค๊ณ ํด๋ณด์. ๋จ์ ํด๋์ค๋ ๋จ์์น๊ตฌ์ ์๋ค๋ก์์ ์ฌ๋ฌ๊ฐ์ง ์ฑ ์์ ๋์์ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ ์์ ๋งํ๋ ๋จ์ผ ์ฑ ์ ์์น์์ ๋ฒ์ด๋๋ค๊ณ ํ ์ ์๋ค. ๋จ์ผ์ฑ ์์์น์ ํด๊ฒฐ๋ฒ์ผ๋ก๋, ๋จ์ ํด๋์ค๋ฅผ ๋จ์์น๊ตฌ ํด๋์ค์, ์๋ค ํด๋์ค๋ก ๋ถ๋ฆฌ์์ผ ํ๋์ ์ฑ ์๋ง์ ์ง๋ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ฉด, ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์์์ ํด๊ฒฐ๋ฒ์ ์ด ๋จ์ ํด๋์ค์ ์ญํ ์ ๋จ์์น๊ตฌ ์ธํฐํ์ด์ค์ ์๋ค ์ธํฐํ์ด์ค๋ก ๋๋์ด ์ฌ์์น๊ตฌ๋ฅผ ๋ง๋ ๋๋ ๋จ์์น๊ตฌ ์ญํ ๋ง ํ ์ ์๊ฒ ์ธํฐํ์ด์ค๋ก ์ ํํ๊ณ , ์ด๋จธ๋์ ์์ ๋๋ ์๋ค ์ธํฐํ์ด์ค๋ก ์ ํํ๋๋ก ํ๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ตญ, ๋จ์ผ ์ฑ ์ ์์น๊ณผ ์ธํฐํ์ด์ค ๋ถํ ์์น์ ๊ฐ์ ๋ฌธ์ ์ ๋ํ ๋ ๊ฐ์ง ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ํ๋ก์ ํธ ์๊ตฌ์ฌํญ๊ณผ ์ค๊ณ์์ ์ทจํฅ์ ๋ฐ๋ผ ๋จ์ผ ์ฑ ์ ์์น์ด๋ ์ธํฐํ์ด์ค ๋ถํ ์์น ์ค ํ๋๋ฅผ ์ ํํด์ ์ค๊ณํ ์ ์๋ค. ํ์ง๋ง ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ๋จ์ผ ์ฑ ์ ์์น์ ์ ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ํ ์ ์๋ค.
์ด๋ฌํ ๊ฐ๋ ๊ณผ ํจ๊ป ์์ฃผ ๋ฑ์ฅํ๋ ์์น ์ค ํ๋์๋ ์ธํฐํ์ด์ค ์ต์์ฃผ์ ์์น์ด๋ผ๋ ๊ฒ์ด ์๋ค. ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ฉ์๋๋ฅผ ์ธ๋ถ์ ์ ๊ณตํ ๋๋ ์ต์ํ์ ๋ฉ์๋๋ง ์ ๊ณตํ๋ผ๋ ๊ฒ์ด๋ค. ์ฆ ๋จ์์น๊ตฌ ์ธํฐํ์ด์ค์๋ ํจ๋ํ๊ธฐ() ๋ฉ์๋๋ฅผ ์ ๊ณตํ ํ์๋ ์๊ณ , ์ ๊ณตํด์๋ ์๋๋ค๋ ๊ฒ์ด๋ค.
"์์ ํด๋์ค๋ ํ์ฑํ ์๋ก ์ข๊ณ , ์ธํฐํ์ด์ค๋ ์์์๋ก ์ข๋ค" ๋ผ๋ ๋ง์ด ์๋ค. ๊ทธ ์ด์ ์ ๋ํด์ ์ดํด๋ณด์๋ฉด, ์ฌ๋์ด๋ผ๋ ํด๋์ค๊ฐ ์๊ณ , ์ด๋ฅผ ํ์ฅํ ํ์ํด๋์ค์ ๊ตฐ์ธ ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ์ฌ ์ํฉ์ ์ฌ๋ํด๋์ค์๋ ๋จ์ง ์ด๋ฆ์ด๋ผ๋ ์์ฑ๊ณผ, ๋จน๋ค()๋ผ๋ ๋ฉ์๋๋ง ์์ผ๋ฉฐ, ํ์๊ณผ ๊ตฐ์ธ์์ ๊ณตํต์ ์ผ๋ก ์๋ค(), ์๊ฐํ๋ค() ์ด๋ฌํ ๋ฉ์๋๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ ํ์ํ ์ํฉ์ด๋ค.
์ด๋ฐ ์ํฉ์์, ์์ ํด๋์ค(์ฌ๋)ํ์ ์ฐธ์กฐ ๋ณ์๋ฅผ ์ด์ฉํ ๋, ์ฌ๊ธฐ์ ๊ธฐ์ ํ๋ณํ์ด ๋ฐ์ํ๋ฉด์ ์์์ ํํ์ ์ ๋๋ก ๋๋ฆฌ์ง ๋ชปํ ๊ฒ์ด๋ค. ๋ฌผ๋ก ์ฌ๊ธฐ์ ํ์๊ณผ ๊ตฐ์ธ์์ ์ค์ ๋ก ์๊ฐํ๋ค() ๋ฉ์๋๊ฐ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ์ง ์์ ๊ฒ์ด๋ค. ์ด ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๋ก ์ถ์๋ฉ์๋๊ฐ ๋ ๊ฒ์ด๋ค.
๐ก DIP - ์์กด ์ญ์ ์์น
๊ณ ์ฐจ์ ๋ชจ๋์ ์ ์ฐจ์ ๋ชจ๋์ ์์กดํ๋ฉด ์ ๋๋ค.
์ด ๋ ๋ชจ๋ ๋ชจ๋ ๋ค๋ฅธ ์ถ์ํ๋ ๊ฒ์ ์์กดํด์ผ ํ๋ค.
์ถ์ํ๋ ๊ฒ์ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ๋ฉด ์ ๋๋ค.
๊ตฌ์ฒด์ ์ธ ๊ฒ์ด ์ถ์ํ๋ ๊ฒ์ ์์กดํด์ผ ํ๋ค.์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ตฌ์ฒดํด๋์ค์ ์์กดํ์ง ๋ง๋ผ.
- ๋ก๋ฒํธ C. ๋งํด์ฝ๊ฒ ํ๊ฐ์ง ์๋ฅผ ํตํด ์ค๋ช ํด๋ณด์. ์๋์ฐจ๋ผ๋ ํด๋์ค๊ฐ ์๋ค. ์ด ํด๋์ค๊ฐ ๋ง์ฝ์ ์ค๋ ธ์ฐํ์ด์ด๋ผ๋ ํด๋์ค์ ์์กด์ ํ๊ณ ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ถ์ด ๊ฒจ์ธ์ด ์ง๋๋ฉด ์ผ๋ฐ ํ์ด์ด๋ก ๊ณ์ ๋ง๋ค ๋ฐ๊ฟ์ค์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ฉด, ์๋์ฐจ ํด๋์ค๋ ํ์ด์ด๊ฐ ๋ฐ๋ ๋ ๋น์ฐํ ๊ทธ ์ํฅ์ ๋ ธ์ถ๋ ๊ฒ ์ด๋ค. ๋ฐ๋ก ์๋์ฐจ ์์ ๋ณด๋ค ๋ ์์ฃผ ๋ณํ๋ ์ค๋ ธ์ฐ ํ์ด์ด์ ์์กดํ๊ณ ์๋ ๊ฒ์ด๋ค.
์ด๋ฐ ๊ฒฝ์ฐ, ๊ตฌ์ฒด์ ์ธ ์ค๋ ธ์ฐํ์ด์ด, ์ผ๋ฐํ์ด์ด, ๊ดํญํ์ด์ด๊ฐ ์๋ ์ถ์ํ๋ ํ์ด์ด ์ธํฐํ์ด์ค์๋ง ์์กดํ๊ฒ ํจ์ผ๋ก์จ ์ค๋ ธ์ฐํ์ด์ด์์ ์ผ๋ฐํ์ด์ด๋ก, ๋๋ ๋ค๋ฅธ ๊ตฌ์ฒด์ ์ธ ํ์ด์ด๋ก ๋ณ๊ฒฝ๋ผ๋ ์๋์ฐจ๊ฐ ๊ทธ ์ํฅ์ ๋ฐ์ง ์๋ ํํ๋ก ๊ตฌ์ฑํ๋ฉด ๋๋ค.
์ ๋ฆฌํ์๋ฉด, ๊ธฐ์กด์๋ ์ค๋ ธ์ฐํ์ด์ด๊ฐ ๊ทธ ๋ฌด์์๋ ์์กดํ์ง ์๋ ํด๋์ค์๋๋ฐ, ์ถ์์ ์ธ ๊ฒ์ธ ํ์ด์ด ์ธํฐํ์ด์ค์ ์์กดํ๊ฒ ๋์๋ค. ์์กด์ ๋ฐฉํฅ์ด ์ญ์ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์๋์ฐจ๋ ์์ ๋ณด๋ค ๋ณํ๊ธฐ ์ฌ์ด ์ค๋ ธ์ฐํ์ด์ด์ ์์กดํ๋ ๊ด๊ณ๋ฅผ ์ค๊ฐ์ ์ถ์ํ๋ ํ์ด์ด ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํด ๋๊ณ ์์กด ๊ด๊ณ๋ฅผ ์ญ์ ์ํค๊ณ ์๋ค. ์ด์ฒ๋ผ ์์ ๋ณด๋ค ๋ณํ๊ธฐ ์ฌ์ด ๊ฒ์ ์์กดํ๋ ๊ฒ์ ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ ์์ ํด๋์ค๋ฅผ ๋์ด ๋ณํ๊ธฐ ์ฌ์ด ๊ฒ์ ๋ณํ์ ์ํฅ๋ฐ์ง ์๊ฒ ํ๋ ๊ฒ์ด ์์กด ์ญ์ ์์น์ด๋ค.
'๊ฐ๋ฐ > Spring Boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Http Message Converter ์ด์ผ๊ธฐ(2) (0) 2022.07.07 HTTP Message Converter ์ด์ผ๊ธฐ(1) (0) 2022.07.07 HTTP API ์๋ต ์ ๋ฆฌ (0) 2022.07.07 ์คํ๋ง์ด ์ฌ๋ํ ๋์์ธ ํจํด (0) 2022.05.31 ์คํ๋ง ํ๋ ์์ํฌ(Spring Framework)์ ๋คํ์ฑ(Polymorphism)(1) (0) 2022.02.08