Spring boot

[Spring Boot] Bank App (4) - νŒ¨ν‚€μ§€ μ„€μ •

미둜910 2024. 8. 13. 12:32
πŸ’‘ν•™μŠ΅ λͺ©ν‘œ
1. νŒ¨ν‚€μ§€ 및 폴더 ꡬ쑰 작기

νŒ¨ν‚€μ§€(package)λŠ” κ΄€λ ¨λœ 클래슀, μΈν„°νŽ˜μ΄μŠ€, μ„œλΈŒνŒ¨ν‚€μ§€ 등을 κ·Έλ£Ήν™”ν•˜μ—¬ μ •λ¦¬ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. Javaμ—μ„œ νŒ¨ν‚€μ§€λŠ” λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜μ—¬ 클래슀 이름 κ°„μ˜ μΆ©λŒμ„ λ°©μ§€ν•˜κ³ , 보닀 μ²΄κ³„μ μœΌλ‘œ μ½”λ“œλ₯Ό 쑰직화할 수 있게 ν•©λ‹ˆλ‹€. νŒ¨ν‚€μ§€λŠ” 물리적으둜 파일 μ‹œμŠ€ν…œμ˜ 디렉토리에 ν•΄λ‹Ήν•˜λ©°, νŒ¨ν‚€μ§€ λ‚΄μ˜ ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€λŠ” 이 디렉토리 내에 μœ„μΉ˜ν•©λ‹ˆλ‹€. 즉, μš°λ¦¬λŠ” μ£Ό μ–Έμ–΄ νŒŒμΌλ“€μ„ λͺ¨μ•„ λ‘λŠ” 폴더λ₯Ό νŒ¨ν‚€μ§€λΌ λΆ€λ₯΄κ² μŠ΅λ‹ˆλ‹€.

Spring boot WEB MVC ν”„λ ˆμž„ μ›Œν¬μ—μ„œλŠ” ..

  • μ •μ μžμ›μ„ λ‘λŠ” νŒ¨ν‚€μ§€css, js, image νŒŒμΌλ“±μ„ λ„£μ–΄ λ‘˜ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • src/main/resource/static(정적 μžμ› 루트 폴더)
  • λ™μ μžμ›(JSP ν™œμš©)
    • 이 μ˜ˆμ œμ—μ„œλŠ” webapp/WEB-INF(λ³΄μ•ˆν΄λ”)/view/ ν˜•μ‹μœΌλ‘œ 생성할 μ˜ˆμ • μž…λ‹ˆλ‹€.
  • μžλ°” μ½”λ“œ
    • controller, service, dto, repository/model, handler … λ“±μœΌλ‘œ 생성할 μ˜ˆμ • μž…λ‹ˆλ‹€.

 

πŸ’‘ MVC νŒ¨ν„΄μ— λŒ€ν•œ κ°œλ… 정리

MVC(λͺ¨λΈ-λ·°-컨트둀러) νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ 및 μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ 쀑 ν•˜λ‚˜λ‘œ, 주둜 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI) κ°œλ°œμ—μ„œ 많이 μ‚¬μš©λ©λ‹ˆλ‹€. 이 νŒ¨ν„΄μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ„Έ 가지 μ£Όμš” ꡬ성 μš”μ†Œλ‘œ λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•˜κ³ , 각 ꡬ성 μš”μ†Œ κ°„μ˜ μƒν˜Έ μž‘μš©μ„ μ‘°μ§ν™”ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

λͺ¨λΈ(Model): λͺ¨λΈμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, 데이터 및 μƒνƒœλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. λͺ¨λΈμ€ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έ μž‘μš©ν•˜κ±°λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‚΄λΆ€μ—μ„œ 데이터λ₯Ό μ²˜λ¦¬ν•˜λ©°, λ°μ΄ν„°μ˜ μƒνƒœλ₯Ό μœ μ§€ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. λͺ¨λΈμ€ 주둜 데이터λ₯Ό 닀루고 λΉ„μ¦ˆλ‹ˆμŠ€ 논리λ₯Ό μ •μ˜ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€.

λ·°(View): λ·°λŠ” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI)λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 이것은 μ‚¬μš©μžμ—κ²Œ 정보λ₯Ό ν‘œμ‹œν•˜κ³  λͺ¨λΈμ—μ„œ κ°€μ Έμ˜¨ 데이터λ₯Ό μ‚¬μš©μžμ—κ²Œ μ‹œκ°μ μœΌλ‘œ ν‘œμ‹œν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. λ·°λŠ” μ‚¬μš©μžμ™€ μƒν˜Έ μž‘μš©ν•˜κ³  μ‚¬μš©μž μž…λ ₯을 μ²˜λ¦¬ν•˜μ§€ μ•ŠμœΌλ©°, λ‹¨μˆœνžˆ 데이터λ₯Ό ν‘œμ‹œν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

컨트둀러(Controller): μ»¨νŠΈλ‘€λŸ¬λŠ” λͺ¨λΈκ³Ό λ·° κ°„μ˜ μƒν˜Έ μž‘μš©μ„ μ‘°μ •ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. μ‚¬μš©μžμ˜ μž…λ ₯을 μ²˜λ¦¬ν•˜κ³  λͺ¨λΈμ„ μ—…λ°μ΄νŠΈν•˜λ©°, 이후에 λͺ¨λΈμ˜ λ³€κ²½ λ‚΄μš©μ„ λ°˜μ˜ν•˜μ—¬ λ·°λ₯Ό κ°±μ‹ ν•©λ‹ˆλ‹€. μ»¨νŠΈλ‘€λŸ¬λŠ” μ‚¬μš©μžμ™€ μƒν˜Έ μž‘μš©ν•˜κ³  μ‚¬μš©μž μž…λ ₯을 ν•΄μ„ν•˜μ—¬ λͺ¨λΈ 및 뷰에 λŒ€ν•œ μ μ ˆν•œ λ™μž‘μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

MVC νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λΆ„λ¦¬ν•˜κ³  λͺ¨λ“ˆν™”ν•˜μ—¬ μœ μ§€ λ³΄μˆ˜μ„±μ„ 높이고 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ μ¦κ°€μ‹œν‚€λŠ” 데 도움이 λ©λ‹ˆλ‹€. λ˜ν•œ μ—¬λŸ¬ κ°œλ°œμžλ“€μ΄ λ™μ‹œμ— μž‘μ—…ν•˜λŠ” λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ νŒ€ μž‘μ—…μ„ κ΄€λ¦¬ν•˜κ³  역할을 λΆ„λ‹΄ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. 이 νŒ¨ν„΄μ€ μ½”λ“œμ˜ 가독성을 ν–₯μƒμ‹œν‚€κ³  디버깅을 μš©μ΄ν•˜κ²Œ λ§Œλ“€μ–΄ 개발 과정을 λ‹¨μˆœν™”ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

주의 : MVVM, MVP, VIPER λ“± λ‹€μ–‘ν•œ νŒ¨ν„΄μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 뭐가 더 쒋은 νŒ¨ν„΄μ΄λΌλŠ” κ°œλ…μ€

μ—†μŠ΅λ‹ˆλ‹€. λ§Œλ“€κ³ μž ν•˜λŠ” ν”„λ‘œμ νŠΈμ˜ 성격 및 μžμ›μ— 맞게 μ„ νƒν•΄μ„œ μ‚¬μš©ν•œλ‹€κ³  이해해 λ΄…μ‹œλ‹€.

 

폴더 및 νŒ¨ν‚€μ§€ 파일 λ³΄λŠ” 방법 선택해보기

 

μ•„λž˜ 이미지λ₯Ό ν™•μΈν•˜κ³  λ™μΌν•œ νŒ¨ν‚€μ§€ 및 폴더 및 νŒŒμΌμ„ 생성해 λ΄…μ‹œλ‹€. (λŒ“κΈ€ 확인)

πŸ’‘ 기본적으둜 git은 빈 디렉토리λ₯Ό 좔적 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€
.gitkeep 처럼 μˆ¨κΉ€ νŒŒμΌμ„ μƒμ„±ν•΄μ„œ μ•½κ°„ 꼼수λ₯Ό λΆ€λ € λΉ„μ–΄ μžˆλŠ” 폴더 및 νŒ¨ν‚€μ§€λ₯Ό commit 및 push ν•΄ λ΄…μ‹œλ‹€.