Hamutaro - Hamtaro 4

Spring

[Spring] μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ (Spring Framework)

carsumin 2021. 8. 20. 17:56

 

ν”„λ ˆμž„μ›Œν¬λž€?

 

  • λ³΅μž‘ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” κΈ°λ³Έ κ°œλ… ꡬ쑰둜, μ†Œν”„νŠΈμ›¨μ–΄ 개발의 ν‹€, λΌˆλŒ€λΌκ³  ν•  수 μžˆλ‹€.
  • 틀을 λ§Œλ“€μ–΄λ†“κ³  살을 λΆ™μ—¬ λ‚˜κ°€λŠ” λ°©μ‹μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆλ‹€.
  • ν”„λ ˆμž„μ›Œν¬λŠ” νŠΉμ •κ°œλ…λ“€μ˜ 좔상화λ₯Ό μ œκ³΅ν•˜λŠ” μ—¬λŸ¬ ν΄λž˜μŠ€λ‚˜ μ»΄ν¬λ„ŒνŠΈλ‘œ κ΅¬μ„±λœλ‹€.

 

 

μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬

 

  • μžλ°” ν”Œλž«νΌμ„ μœ„ν•œ μ˜€ν”ˆμ†ŒμŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬λ‘œ κ°„λ‹¨νžˆ μŠ€ν”„λ§μ΄λΌκ³ λ„ ν•œλ‹€.
  • μžλ°” μ—”ν„°ν”„λΌμ΄μ¦ˆ κ°œλ°œμ„ νŽΈν•˜κ²Œ ν•΄μ£ΌλŠ” μ˜€ν”ˆμ†ŒμŠ€ κ²½λŸ‰κΈ‰ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬μ΄λ‹€.
  • μžλ°”κ°œλ°œμ„ μœ„ν•œ ν‹€λ‘œ, 쒅속 객체λ₯Ό 생성해주고 μ‘°λ¦½ν•΄μ£ΌλŠ” 도ꡬ이닀.

 

 

μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ νŠΉμ§•

 

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ°„μ˜ 결합이 λŠμŠ¨ν•˜λ‹€.
  • μ œμ–΄μ˜ μ—­ν–‰(IoC, Inversion of Control) 을 μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— 컨트둀의 μ œμ–΄κΆŒμ΄ μ‚¬μš©μžκ°€ μ•„λ‹ˆλΌ ν”„λ ˆμž„μ›Œν¬μ— μžˆμ–΄μ„œ ν•„μš”μ— 따라 μŠ€ν”„λ§μ—μ„œ μ‚¬μš©μžμ˜ μ½”λ“œλ₯Ό ν˜ΈμΆœν•œλ‹€.
  • 크기와 λΆ€ν•˜ μΈ‘λ©΄μ—μ„œ κ²½λŸ‰ν™” 된 ν”„λ ˆμž„μ›Œν¬μ΄λ‹€.
  • λΉ λ₯Έ μ‹œκ°„μ•ˆμ— μ—”ν„°ν”„λΌμ΄μ¦ˆκΈ‰μ˜ μ‹œμŠ€ν…œ ꡬ좕이 κ°€λŠ₯ν•˜λ‹€.
  • XML 섀정을 μ΄μš©ν•˜μ—¬ μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•˜λ‹€.
  • 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— νŠΈλžœμž­μ…˜μ΄λ‚˜ λ‘œκΉ…, λ³΄μ•ˆκ³Ό 같이 μ—¬λŸ¬ λͺ¨λ“ˆμ—μ„œ κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” κΈ°λŠ₯을 λΆ„λ¦¬ν•˜μ—¬ 관리가λŠ₯ν•˜λ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 객체의 생λͺ…주기와 섀정을 ν¬ν•¨ν•˜κ³  κ΄€λ¦¬ν•œλ‹€λŠ” μ μ—μ„œ μΌμ’…μ˜ μ»¨ν…Œμ΄λ„ˆλΌ ν•  수 μžˆλ‹€.
  • κ°„λ‹¨ν•œ μ»΄ν¬λ„ŒνŠΈλ‘œ λ³΅μž‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜κ³  μ„€μ •ν•  수 μžˆλ‹€.
  • POJO(Plain Old Java Object) λ°©μ‹μ˜ ν”„λ ˆμž„μ›Œν¬μ΄κΈ° λ•Œλ¬Έμ— κ΅¬ν˜„μ„ μœ„ν•΄ νŠΉμ •ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜κ±°λ‚˜ 상속을 받을 ν•„μš”κ°€ μ—†μ–΄μ„œ 기쑴에 μ‘΄μž¬ν•˜λŠ” 라이브러리 등을 μ§€μ›ν•˜κΈ°μ— μš©μ΄ν•˜κ³ , 객체가 가볍닀.
  • μ˜μ‘΄μ„±μ£Όμž…(DI, Dependency Injection)을 μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— 각각의 κ³„μΈ΅μ΄λ‚˜ μ„œλΉ„μŠ€λ“€μ„ μ„œλ‘œ μ—°κ²°ν•΄μ€€λ‹€.
  • λ‹€μ–‘ν•œ μ„œλΉ„μŠ€λ₯Ό μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— λ§ˆμ΄λ°”ν‹°μŠ€κ°™μ€ 완성도가 높은 λΌμ΄λΈŒλŸ¬λ¦¬μ™€ μ—°κ²°ν•  수 μžˆλ‹€.