πŸ“† Today I Learned(κ°œλ°œμ–Έμ–΄ν•™μŠ΅)/SPRING

[SPRING] Spring Frameworkλž€?

μ„€λͺ… : 

μŠ€ν”„λ§μ€ μžλ°” μ—”ν„°ν”„λΌμ΄μ¦ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ— μ‚¬μš©λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬λ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬λŠ” κ°œλ°œμ„ λΉ λ₯΄κ³  효율적으둜 ν•  수 μžˆλ„λ‘ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 바탕이 λ˜λŠ” ν‹€κ³Ό 곡톡 ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈ, 기술 API 등을 μ œκ³΅ν•΄μ€€λ‹€.

 

μŠ€ν”„λ§μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„  μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ‹€λ£¨λŠ” 방법과 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 였브젝트λ₯Ό μ΄μš©ν•  수 μžˆλ„λ‘ 섀정정보λ₯Ό μž‘μ„±ν•˜λŠ” 방법을 μ•Œμ•„μ•Ό ν•œλ‹€.


 

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ ( μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λ³Έ ν‹€ )

  • μŠ€ν”„λ§ λŸ°νƒ€μž„ 엔진(μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ»¨ν…μŠ€νŠΈ)을 μ˜λ―Έν•œλ‹€.
  • 섀정정보λ₯Ό 참고둜 ν•΄μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” 였브젝트λ₯Ό μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•œλ‹€.
  • λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•  μˆ˜λ„ μžˆμ§€λ§Œ μ›Ή λͺ¨λ“ˆμ—μ„œ λ™μž‘ν•˜λŠ” μ„œλΉ„μŠ€λ‚˜ μ„œλΈ”λ¦ΏμœΌλ‘œ λ“±λ‘ν•΄μ„œ μ‚¬μš©ν•œλ‹€.

 

IoC/DI, μ„œλΉ„μŠ€ 좔상화, AOP ( 곡톡 ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈ )

ν”„λ ˆμž„μ›Œν¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” μ˜€λΈŒμ νŠΈκ°€ μƒμ„±λ˜κ³  λ™μž‘ν•˜λŠ” 방식에 λŒ€ν•œ 틀을 μ œκ³΅ν•΄μ€„ 뿐만 μ•„λ‹ˆλΌ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œκ°€ μ–΄λ–»κ²Œ μž‘μ„±λΌμ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ 기쀀도 μ œμ‹œν•΄μ€€λ‹€. 이런 틀을 보톡 ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈμ΄λΌκ³  ν•œλ‹€.

 

μŠ€ν”„λ§μ—μ„œλŠ” μ„Έ 가지 ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈμ„ μ§€μ›ν•œλ‹€.

 

1. IoC/DI

  • 였브젝트의 생λͺ…주기와 μ˜μ‘΄κ΄€κ³„μ— λŒ€ν•œ ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈμ΄λ‹€.
  • μŠ€ν”„λ§μ—μ„œ μœ μ—°ν•˜κ³  ν™•μž₯성이 λ›°μ–΄λ‚œ μ½”λ“œλ₯Ό λ§Œλ“€ 수 있게 λ„μ™€μ£ΌλŠ” 객체지ν–₯ 섀계 원칙과 λ””μžμΈ νŒ¨ν„΄μ˜ 핡심 원리λ₯Ό λ‹΄κ³  μžˆλ‹€.

 

2. μ„œλΉ„μŠ€ 좔상화

  • ν™˜κ²½μ΄λ‚˜ μ„œλ²„, νŠΉμ • κΈ°μˆ μ— μ’…μ†λ˜μ§€ μ•Šκ³  이식성이 λ›°μ–΄λ‚˜λ©° μœ μ—°ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€ 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 것( 좔상 계측을 λ‘λŠ” 방법 )

3. AOP

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œμ— μ‚°μž¬ν•΄μ„œ λ‚˜νƒ€λ‚˜λŠ” 뢀가적인 κΈ°λŠ₯을 λ…λ¦½μ μœΌλ‘œ λͺ¨λ“ˆν™”ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈμ΄λ‹€.