๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Backend/Java&Spring

[BankApp3] ํŒจํ‚ค์ง€ ์„ค์ •

by JINJINC 2025. 1. 14.
728x90
๋ฐ˜์‘ํ˜•
 ๐Ÿ’ก ํ•™์Šต ๋ชฉํ‘œ
ํŒจํ‚ค์ง€ ๋ฐ ํด๋” ๊ตฌ์กฐ ์žก๊ธฐ
ํŒจํ‚ค์ง€(package)๋Š” ๊ด€๋ จ๋œ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์„œ๋ธŒํŒจํ‚ค์ง€ ๋“ฑ์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Java์—์„œ ํŒจํ‚ค์ง€๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํด๋ž˜์Šค ์ด๋ฆ„ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ๋ณด๋‹ค ์ฒด๊ณ„์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์กฐ์งํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ํ•ด๋‹นํ•˜๋ฉฐ, ํŒจํ‚ค์ง€ ๋‚ด์˜ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ด ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์šฐ๋ฆฌ๋Š” ์ฃผ ์–ธ์–ด ํŒŒ์ผ๋“ค์„ ๋ชจ์•„ ๋‘๋Š” ํด๋”๋ฅผ ํŒจํ‚ค์ง€๋ผ ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Spring boot WEB MVC ํ”„๋ ˆ์ž„ ์›Œํฌ์—์„œ๋Š” 

  • ์ •์ ์ž์›์„ ๋‘๋Š” ํŒจํ‚ค์ง€css, js, image ํŒŒ์ผ๋“ฑ์„ ๋„ฃ์–ด ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • src/main/resource/static(์ •์  ์ž์› ๋ฃจํŠธ ํด๋”)
  • ๋™์ ์ž์›(JSP ํ™œ์šฉ)
    • ์ด ์˜ˆ์ œ์—์„œ๋Š” webapp/WEB-INF(๋ณด์•ˆํด๋”)/view/ ํ˜•์‹์œผ๋กœ ์ƒ์„ฑํ•  ์˜ˆ์ • ์ž…๋‹ˆ๋‹ค.
  • ์ž๋ฐ” ์ฝ”๋“œ
    • controller, service, dto, repos`itory/model, handler … ๋“ฑ์œผ๋กœ ์ƒ์„ฑํ•  ์˜ˆ์ • ์ž…๋‹ˆ๋‹ค.

 ๐Ÿ’ก MVC ํŒจํ„ด์— ๋Œ€ํ•œ ๊ฐœ๋… ์ •๋ฆฌ

MVC(๋ชจ๋ธ-๋ทฐ-์ปจํŠธ๋กค๋Ÿฌ) ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ, ์ฃผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI) ๊ฐœ๋ฐœ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์กฐ์งํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  1. ๋ชจ๋ธ(Model): ๋ชจ๋ธ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ ๋ฐ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ฑฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ๋ฅผ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  2. ๋ทฐ(View): ๋ทฐ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋ชจ๋ธ์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ปจํŠธ๋กค๋Ÿฌ(Controller): ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ๊ณผ ๋ทฐ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์กฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ชจ๋ธ์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉฐ, ์ดํ›„์— ๋ชจ๋ธ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜์—ฌ ๋ทฐ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ํ•ด์„ํ•˜์—ฌ ๋ชจ๋ธ ๋ฐ ๋ทฐ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

MVC ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋™์‹œ์— ์ž‘์—…ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŒ€ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๊ณ  ์—ญํ• ์„ ๋ถ„๋‹ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๋””๋ฒ„๊น…์„ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

 

์ฃผ์˜ : MVVM, MVP, VIPER ๋“ฑ ๋‹ค์–‘ํ•œ ํŒจํ„ด์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ญ๊ฐ€ ๋” ์ข‹์€ ํŒจํ„ด์ด๋ผ๋Š” ๊ฐœ๋…์€

์—†์Šต๋‹ˆ๋‹ค. ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ฒฉ ๋ฐ ์ž์›์— ๋งž๊ฒŒ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ดํ•ดํ•ด ๋ด…์‹œ๋‹ค

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€