Backend/Spring

Backend/Spring

[Spring] ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™(SOLID)

SRP(Single responsibility principle) ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์ค‘์š”ํ•œ ๊ธฐ์ค€์€ ๋ณ€๊ฒฝ์ด๋‹ค. ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ ํŒŒ๊ธ‰ ํšจ๊ณผ๊ฐ€ ์ ์œผ๋ฉด ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ž˜ ๋”ฐ๋ฅธ ๊ฒƒ์ด๋‹ค. ex) UI ๋ณ€๊ฒฝ, ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์‚ฌ์šฉ์„ ๋ถ„๋ฆฌ OCP(Open/closed principle) ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ ์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋Š” ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ OCP ์›์น™์„ ์ง€ํ‚ฌ ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ์ œ์ (ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ ๋ณ€๊ฒฝ)์ด ์žˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋Š” ๋ณ„๋„์˜ ์กฐ๋ฆฝ, ์„ค์ •์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค. (์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์—ญํ• ) LSP(Liskov substitution principle) ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ๊นจ๋œจ..

Backend/Spring

[Spring] MVC(Model, View, Controller) ์ •๋ฆฌ

โ— MVC(Model, View, Controller)๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐ์ดํ„ฐ ๋ฐ ๋…ผ๋ฆฌ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ™”๋ฉด์„ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MVC์˜ ๋ชฉ์ ์€ ํ™”๋ฉด๊ณผ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•ด ์ฝ”๋“œ๊ฐ„์˜ ์ข…์†์„ฑ์„ ์ค„์ด๊ณ  ๊ตฌ์„ฑ์š”์†Œ๊ฐ„์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ์ฝ”๋“œ ๋ถ„๋ฆฌ๊ฐ€ ์‰ฝ๊ณ  ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š”๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. โ— ๋ชจ๋ธ(Model) ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€ ์ •์˜ํ•œ๋‹ค. ๋‚ด๋ถ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ(ex. DB)์™€ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ํŠนํžˆ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ž‘์—…(ex. ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์‚ญ์ œ)๋ฅผ ํ•˜๋‚˜์˜ ์ž‘์—…์œผ๋กœ ๋ฌถ์€ ํŠธ๋žœ์žญ์…˜์„ ๋‹ค๋ฃจ๋Š” ..

Backend/Spring

[Spring] IntelliJ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •

โ— ์ค€๋น„๋ฌผ JDK: Java 11 ์„ค์น˜ IDE: IntelliJ ์„ค์น˜ โ— ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ http://start.spring.io ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ(๋ณธ์ธ์˜ ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ์„ ํƒ ํ›„ GENERATE ํด๋ฆญ) โ— Open or Import Project IntelliJ IDEA ์‹คํ–‰ Open or Import ์„ ํƒ ์••์ถ•์„ ํ‘ผ ํŒŒ์ผ์˜ build.gradle ์„ ํƒ Open as Project(์ƒ์„ฑ) โ— ๋™์ž‘ ํ™•์ธ ๊ธฐ๋ณธ ๋ฉ”์ธ ํด๋ž˜์Šค ์‹คํ–‰ ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฉ”์ธ ์‹คํ–‰ ํ›„ ์—๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋™์ž‘ ํ™•์ธ(http://localhost:8080)

ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด
'Backend/Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก