MapleStory Finger Point

🟀 JAVA/🟀 Spring

[Spring] μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬μ— λŒ€ν•˜μ—¬

HYEJU01 2024. 8. 6. 10:35

πŸ’‍♀️ μ˜€λŠ˜μ€ μŠ€ν”„λ§ Spring 에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² λ‹€ ! 

Spring 에 λŒ€ν•΄ μ•Œμ•„λ³΄κΈ° 전에 기본적인 이둠을 μ•Œμ•„λ³΄μž!

 

 

πŸ’» ν”„λ ˆμž„μ›Œν¬(framework) λž€? 

 

μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ

κΈ°λ³Έ ꡬ쑰와 ν‘œμ€€ν™”λœ 방법을 μ œκ³΅ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ ν”Œλž«νΌμ΄λ‹€.

 

예λ₯Όλ“€μ–΄,

μš”μ‹μ—…μ„ μ‹œμž‘ν• λ•Œ, μ²˜μŒλΆ€ν„° 혼자 μ€€λΉ„ν•˜κΈ°μ—” λ‹€μ–‘ν•œ λ©΄μ—μ„œ λ„ˆλ¬΄λ‚˜λ„ 뢀담이 되기 마련인데

μ „λ°˜μ μΈ ꡬ쑰와 틀을 μ œκ³΅ν•΄μ£ΌλŠ” ν”„λžœμ°¨μ΄μ¦ˆ κ°€λ§Ήμ μœΌλ‘œ μ‹œμž‘ν•˜κ²Œ λœλ‹€λ©΄  맀우 νŽΈμ•ˆν•˜κ²Œ μš”μ‹μ—…μ„ μ‹œμž‘ν•΄λ³Ό 수 μžˆλ‹€.

 

즉, ν”„λ ˆμž„μ›Œν¬λŠ” λͺ©μ μ— 따라 효율적으둜 ꡬ쑰λ₯Ό μ§œλ†“μ€ 개발 방식이닀.

 

 

πŸ’» λͺ¨λ“ˆ (Module)

라이브러리λ₯Ό λ§ν•œλ‹€.

ν”„λ ˆμž„μ›Œν¬ μ•ˆμ— 미리 λ§Œλ“€μ–΄μ ΈμžˆλŠ” κΈ°λŠ₯

 

 

πŸ’»  ν”„λ ˆμž„μ›Œν¬μ˜ μ’…λ₯˜

  • 슀트럿츠 ν”„λ ˆμž„μ›Œν¬ (STRUTS Framework)
  • μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ (Spring Framework)
  • μ•΅κ·€λŸ¬ JS( AngularJS)
  • μž₯κ³  ν”„λ ˆμž„μ›Œν¬ (Django Framework)

 

 

  • μ›Ή ν”„λ ˆμž„μ›Œν¬: μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ ν”„λ ˆμž„μ›Œν¬. 예: Spring (Java), Django (Python), Ruby on Rails (Ruby).
  • λͺ¨λ°”일 ν”„λ ˆμž„μ›Œν¬: λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ ν”„λ ˆμž„μ›Œν¬. 예: React Native, Flutter.
  • λ°μŠ€ν¬ν†± μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬: λ°μŠ€ν¬ν†± μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ ν”„λ ˆμž„μ›Œν¬. 예: Electron, Qt.
  • κ²Œμž„ 엔진: κ²Œμž„ κ°œλ°œμ„ μœ„ν•œ ν”„λ ˆμž„μ›Œν¬. 예: Unity, Unreal Engine.

 

 

 

πŸ’»  ν”„λ ˆμž„μ›Œν¬ vs 라이브러리

 

  • ν”„λ ˆμž„μ›Œν¬: μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜κ³ , κ°œλ°œμžκ°€ κ·Έ ꡬ쑰에 맞좰 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ„λ‘ ν•©λ‹ˆλ‹€. 즉, ν”„λ ˆμž„μ›Œν¬κ°€ 개발자의 μ½”λ“œλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€ (μ œμ–΄μ˜ μ—­μ „, Inversion of Control).
  • 라이브러리: νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ κ°œλ°œμžκ°€ ν˜ΈμΆœν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€. κ°œλ°œμžκ°€ ν•„μš”ν•  λ•Œ 라이브러리λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

 

 

 

 

πŸ’»  μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ λž€?

 

μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬λž€, μžλ°” ν”Œλž«νΌμ„ μœ„ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬μ΄λ‹€. 

κ²½λŸ‰ν˜• ν”„λ ˆμž„μ›Œν¬λ‘œ ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 클수둝 μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•œλ‹€. ( μ—”ν„°ν”„λΌμ΄μ¦ˆκΈ‰ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발)

λ‹€μ–‘ν•œ 라이브러리 연동을 μ§€μ›ν•˜κ³ ,  μ „μžμ •λΆ€ ν‘œμ€€ν”„λ ˆμž„μ›Œν¬μ˜ 기반이 λ˜λŠ” 기술이기 λ•Œλ¬Έμ— ν™œμš©λ„κ°€ λ†’μ•„μ§€κ³ μžˆλ‹€.

 

 

 

πŸ’»  μŠ€ν”„λ§ νŠΉμ§•

 

  • POJO(Plain Old Java Object) 기반의 ν”„λ ˆμž„μ›Œν¬ μžλ°” 였브젝트 기반 ν”„λ ˆμž„μ›Œν¬ λΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€. μžλ°” 객체의 라이프사이클을 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆκ°€ 직접 κ΄€λ¦¬ν•˜λ©°, μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆλ‘œλΆ€ν„° ν•„μš”ν•œ 객체λ₯Ό μ–»μ–΄ 올 수 μžˆμŠ΅λ‹ˆλ‹€.
  • DI(Dependency Injection)을 지원 각 κ³„μΈ΅μ΄λ‚˜ μ„œλΉ„μŠ€ λ“€ 사이 λ˜λŠ” 객체듀 사이에 μ˜μ‘΄μ„±μ΄ μ‘΄μž¬ν•  경우 μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬κ°€ μ„œλ‘œλ₯Ό μ—°κ²°μ‹œ μΌœμ€λ‹ˆλ‹€. μ΄λŠ” ν΄λž˜μŠ€λ“€ 사이에 μ•½ν•œ 결합을 κ°€λŠ₯μΌ€ ν•©λ‹ˆλ‹€.
  • AOP(Aspect Oriented Programming)λ₯Ό 지원 νŠΈλžœμž­μ…˜, λ‘œκΉ…, λ³΄μ•ˆ λ“± μ—¬λŸ¬ λͺ¨λ“ˆμ—μ„œ κ³΅ν†΅μ μœΌλ‘œ μ§€μ›ν•˜λŠ” κΈ°λŠ₯을 λΆ„λ¦¬ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν™•μž₯성이 λ†’λ‹€. μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬μ˜ μ†ŒμŠ€λŠ” λͺ¨λ‘ 라이브러리둜 λΆ„λ¦¬μ‹œμΌœ λ†“μŒμœΌλ‘œμ¨ ν•„μš”ν•œ 라이브러리만 κ°€μ Έλ‹€ μ“Έ 수 있 μŠ΅λ‹ˆλ‹€. 그리고 λ§Žμ€ μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬λ“€λ„ 이미 μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬μ™€ μ—°λ™λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • Model2 λ°©μ‹μ˜ MVC Frameworkλ₯Ό 지원

 

  • κ²½λŸ‰μ»¨ν…Œμ΄λ„ˆλ‘œ 라이프사이클을 κ΄€λ¦¬ν•˜κ³  ν•„μš”ν•œ 객체λ₯Ό μŠ€ν”„λ§μœΌλ‘œλΆ€ν„° λ°›μ•„μ˜΅λ‹ˆλ‹€.
  • DIμ§€μ›ν•˜μ—¬ κ°μ²΄κ°„μ˜ μ˜μ‘΄κ΄€κ³„ 섀정이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • AOPμ§€μ›ν•©λ‹ˆλ‹€.
  • POJOλ°©μ‹μœΌλ‘œ μžλ°”κ°μ²΄λŠ” νŠΉμ •ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜κ³  클라슀 상속이 ν•„μš”μΉ˜ μ•ŠμŠ΅λ‹ˆλ‹€.
  • νŠΈλžœμ μ…˜ 처리λ₯Ό μœ„ν•œ μΌκ΄€λœ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ˜μ†μ„± κ΄€λ ¨ λ‹€μ–‘ν•œ APIλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
  • API연동을 μ§€μ›ν•©λ‹ˆλ‹€.

 

 

πŸ’»  μŠ€ν”„λ§ 핡심 κ°œλ…

 

1. IOC (Inversion of Control) / DI (Dependency Injection) : 객체 생성 및 μ˜μ‘΄μ„± 관리λ₯Ό ν”„λ ˆμž„μ›Œν¬μ— 맑김

μ˜μ‘΄μ„± μ£Όμž…(DI)  : μƒμ„±μž μ£Όμž…, μ„Έν„° μ£Όμž…

 

2. AOP (Aspect-Oriented Programming) : 핡심 둜직과 뢀가적인 관심사λ₯Ό λΆ„λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„

 

3. Spring MVC : μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ μ›Ή ν”„λ ˆμž„μ›Œν¬

DispatcherServlet, Controller, View , Model


4. Spring Boot : Spring ν”„λ ˆμž„μ›Œν¬λ₯Ό 더 μ‰½κ²Œ μ‚¬μš©ν•˜κΈ° μœ„ν•œ ν”„λ‘œμ νŠΈ

μžλ™ μ„€μ •(Auto-configuration) , λ‚΄μž₯ μ„œλ²„, μŠ€νƒ€ν„° νŒ¨ν‚€μ§€


5. Spring Data : 데이터 μ•‘μ„ΈμŠ€ 계측을 κ°„νŽΈν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•œ ν”„λ‘œμ νŠΈ

Spring Data JPA, Spring Data MongoDB

 

6. Spring Security 
7. Spring Cloud
8. Spring Batch
9. Spring Integration

 

 

 

 

 

 

좜처 >

https://www.castingn.com/sourcing/kkultip_detail/110