nyximos.log

[Spring] μŠ€ν”„λ§μ˜ μ •μ˜ λ³Έλ¬Έ

Programming/Spring

[Spring] μŠ€ν”„λ§μ˜ μ •μ˜

nyximos 2022. 1. 3. 02:02

πŸŒ±μŠ€ν”„λ§μ΄λž€?

μžλ°” μ—”ν„°ν”„λΌμ΄μ¦ˆ κ°œλ°œμ„ νŽΈν•˜κ²Œ ν•΄μ£ΌλŠ” κ²½λŸ‰ν™”λœ κ°œλ°œν™˜κ²½μ„ μ œκ³΅ν•˜λŠ” μ˜€ν”ˆμ†ŒμŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬

  • μžλ°” μ–Έμ–΄ 기반의 ν”„λ ˆμž„μ›Œν¬
  • 객체 지ν–₯ μ–Έμ–΄κ°€ 가진 κ°•λ ₯ν•œ νŠΉμ§•μ„ μ‚΄λ €λ‚΄λŠ” ν”„λ ˆμž„μ›Œν¬
  • 쒋은 객체 지ν–₯ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œν•  수 있게 λ„μ™€μ£ΌλŠ” ν”„λ ˆμž„μ›Œν¬

μŠ€ν”„λ§μ€ λ¬Έλ§₯에 따라 λ‹€λ₯΄κ²Œ 쓰이기도 ν•œλ‹€.

  • μŠ€ν”„λ§ DI μ»¨ν…Œμ΄λ„ˆ 기술
  • μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬
  • μŠ€ν”„λ§λΆ€νŠΈ, μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ 등을 λͺ¨λ‘ ν¬ν•¨ν•œ μŠ€ν”„λ§ μƒνƒœκ³„

 

πŸ€” μ–Έμ œ 처음 λ“±μž₯ν–ˆλ‚˜μš”?

2003λ…„ Rod Johnson이 μ§‘ν•„ν•œ Expert One-on-One J2EE Design and DevelopmentλΌλŠ” μ±…μ—μ„œ 처음 μ†Œκ°œ λ˜μ—ˆμœΌλ©°

EJB(Enterprise Java Beans)λΌλŠ” 무겁고 λ³΅μž‘ν•œ ν”Œλž«νΌμ—μ„œ λ²—μ–΄λ‚˜ POJO(Plain Old Java Object)λ₯Ό 기반으둜 ν•˜λŠ” κ²½λŸ‰μ˜ ν™˜κ²½μ„ μ œκ³΅ν•œλ‹€.

EJBλž€? 

Enterprise Java Beans

κ±°λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ ꡬ좕을 μœ„ν•œ μ»΄ν¬λ„ŒνŠΈ λͺ¨λΈ

싀행속도가 느리며 ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈμ΄ λ³΅μž‘ν•˜λ‹€. νŠΉμ • ν™˜κ²½μ— 쒅속적이닀.

였직 μ„œλ²„μ—μ„œλ§Œ λ™μž‘ν•œλ‹€.

JAVA Beansλž€?

μžλ°”λ‘œ μž‘μ„±λœ μ»΄ν¬λ„ŒνŠΈλ‘œ ν΄λž˜μŠ€λ“€μ΄ λ³΅ν•©μ μœΌλ‘œ 이루어진 ꡬ쑰

μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ©° μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‘°λ¦½ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉ λ₯΄κ²Œ λ§Œλ“€ 수 μžˆλ‹€.

EJBμ™€λŠ” λ‹€λ₯΄λ‹€. JAVA BeansλŠ” ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ ν†΅μ‹ ν•˜λŠ” κ²½λ‘œμ—μ„œ μ‚¬μš©λœλ‹€.

POJOλž€?

Plain Old Java Object

였래된 λ°©μ‹μ˜ κ°„λ‹¨ν•œ μžλ°” 였브젝트

객체지ν–₯적인 원리에 μΆ©μ‹€ν•˜λ©΄μ„œ, ν™˜κ²½κ³Ό κΈ°μˆ μ— μ’…μ†λ˜μ§€ μ•Šκ³  ν•„μš”μ— 따라 μž¬ν™œμš©λ  수 μžˆλŠ” λ°©μ‹μœΌλ‘œ μ„€κ³„λœ 였브젝트λ₯Ό λ§ν•œλ‹€.
- ν† λΉ„μ˜ μŠ€ν”„λ§-

POJO의 쑰건

  1. νŠΉμ • κ·œμ•½μ— μ’…μ†λ˜μ§€ μ•ŠλŠ”λ‹€.
  2. νŠΉμ • ν™˜κ²½μ— μ’…μ†λ˜μ§€ μ•ŠλŠ”λ‹€.
    • HttpServletRequestλ‚˜ HttpSession와 κ΄€λ ¨λœ APIλ₯Ό 직접 μ΄μš©ν•΄μ„œλŠ” μ•ˆλœλ‹€.
  3. 단일 μ±…μž„ 원칙을 μ§€ν‚€λŠ” ν΄λž˜μŠ€μ—¬μ•Ό ν•œλ‹€.

 

 

πŸ“Œ μžλ°” μ—”ν„°ν”„λΌμ΄μ¦ˆ Java EE (Java Enterprise Edition)

κΈ°μ—…μš© μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λŠ”λ° ν•„μš”ν•œ μ—¬λŸ¬κ°€μ§€ 도ꡬ와 λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ λͺ¨μ•„ 놓은 것

Java EEλŠ” Java SE ν”Œλž«νΌ 상에 κ΅¬μΆ•λœλ‹€.

 

Java SE(Java Standard Edition)λŠ” μžλ°” μ–Έμ–΄μ˜ 핡심 κΈ°λŠ₯을 μ œκ³΅ν•˜λ©° Java SE APIλŠ” μžλ°” μ–Έμ–΄μ˜ 기본적인 νƒ€μž…κ³Ό κ°μ²΄μ—μ„œλΆ€ν„° λ„€νŠΈμ›Œν‚Ή, λ³΄μ•ˆ, λ°μ΄ν„°λ² μ΄μŠ€ μ ‘κ·Ό, GUI , XML νŒŒμ‹±μ— μ‚¬μš©λ˜λŠ” κ³ μˆ˜μ€€μ˜ ν΄λž˜μŠ€κΉŒμ§€λ₯Ό λͺ¨λ‘ μ •μ˜ν•œλ‹€. Java SE API에 μΆ”κ°€ν•˜μ—¬μ„œ Java SE ν”Œλž«νΌμ€ JVM, μ»΄νŒŒμΌλŸ¬μ™€ 같은 κ°œλ°œλ„κ΅¬ 등을 ν¬ν•¨ν•˜κ³  μžˆλ‹€.

 

πŸ“Œ μ˜€ν”ˆ μ†ŒμŠ€ Open Source Software

λˆ„κ΅¬μ—κ²Œλ‚˜ κ³΅κ°œλ˜μ–΄ 자유둭게 확인,μˆ˜μ •,배포할 수 μžˆλŠ” μ½”λ“œ 

 

πŸ“Œ κ²½λŸ‰ν™”

EJB λ“± κΈ°μ‘΄ ν”„λ ˆμž„μ›Œν¬μ—μ„œμ˜ μ½”λ“œμ— λΉ„ν•΄ μ½”λ“œλŸ‰μ΄ 적고 λ‹¨μˆœν•˜λ‹€.

λΉ λ₯΄κ³  κ°„νŽΈν•˜κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 μžˆλ‹€. → 생산성 good πŸ‘

 

πŸ“Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ Application

λ…λ¦½μ μœΌλ‘œ 싀행될 수 μžˆλŠ” 일반 μ‘μš© ν”„λ‘œκ·Έλž¨

 

πŸ“Œ ν”„λ ˆμž„μ›Œν¬ Framework

  • 사전적 μ˜λ―Έλ‘œλŠ” λΌˆλŒ€, ꡬ쑰
  • μ†Œν”„νŠΈμ›¨μ–΄ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ μ†”λ£¨μ…˜μ˜ κ°œλ°œμ„ μˆ˜μ›”ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ μ†Œν”„νŠΈμ›¨μ–΄μ˜ ꡬ체적 κΈ°λŠ₯에 ν•΄λ‹Ήν•˜λŠ” λΆ€λΆ„μ˜ 섀계와 κ΅¬ν˜„μ„ μž¬μ‚¬μš© κ°€λŠ₯ν•˜λ„λ‘ ν˜‘μ—…ν™”λœ ν˜•νƒœλ‘œ μ œκ³΅ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ ν™˜κ²½

 

🌲 μŠ€ν”„λ§ Project

https://spring.io/projects에 듀어가보면 Spring Boot, Spring Framework, Spring Data, Spring Cloud, Spring Security λ“± λ§Žμ€ ν”„λ‘œμ νŠΈλ‘œ μŠ€ν”„λ§ μƒνƒœκ³„κ°€ ν˜•μ„±λ˜μ–΄μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

Spring | Projects

Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.

spring.io

 

πŸ₯—  μŠ€ν”„λ§ λΆ€νŠΈλž€?

JDK, ν†°μΊ£, 메이븐 같은 κ°œλ°œν™˜κ²½μ„ ν•œλ²ˆμ˜ μ„€μΉ˜λ‘œ μ‚¬μš©ν•  수 있게 ν•΄μ£Όλ©°,

ν”„λ‘œμ νŠΈμ— ν•„μš”ν•œ λͺ¨λ“  λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ μžλ™μœΌλ‘œ μΆ”κ°€ν•΄μ€€λ‹€.

μŠ€ν”„λ§μ„ 처음 μ‚¬μš©ν•˜λŠ” κ°œλ°œμžλ“€λ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ΄€λ ¨ 섀정을 μ‰½κ²Œ μ²˜λ¦¬ν•˜κ³  κ΄€λ¦¬ν•¨μœΌλ‘œμ¨ κ°œλ°œμžμ²΄μ— 더 집쀑할 수 있게 ν•΄μ€€λ‹€.

 

 

😲 μŠ€ν”„λ§ λΆ€νŠΈμ˜ μž₯점

1. 라이브러리 관리 μžλ™ν™”

κΈ°μ‘΄ μžλ°” ν”„λ‘œμ νŠΈμ—μ„œλ„ Mavenμ΄λ‚˜ Gradle을 μ΄μš©ν•΄ 라이브러리 μ˜μ‘΄μ„±μ„ κ΄€λ¦¬ν–ˆμ—ˆμ§€λ§Œ

μŠ€ν”„λ§λΆ€νŠΈμ—μ„œλŠ” Starterλ₯Ό μ΄μš©ν•΄ νŠΉμ • κΈ°λŠ₯에 ν•„μš”ν•œ 라이브러리 μ˜μ‘΄μ„±μ„ 더 κ°„λ‹¨νžˆ μ²˜λ¦¬ν•œλ‹€.

 

2. μ„€μ •μ˜ μžλ™ν™”

ν”„λ‘œμ νŠΈμ— μΆ”κ°€λœ 라이브러리λ₯Ό 기반으둜 싀행에 ν•„μš”ν•œ ν™˜κ²½μ„ μžλ™μœΌλ‘œ μ„€μ •ν•΄μ€€λ‹€.

λ”°λΌμ„œ κ°œλ°œμžλ“€μ€ 라이브러리 κ΄€λ ¨ν•œ μŠ€ν”„λ§ 섀정을 λ”°λ‘œ ν•˜μ§€ μ•Šλ”λΌλ„ κ°œλ°œμ— 집쀑할 수 μžˆλ‹€.

 

3. 라이브러리 버전 μžλ™ 관리

μŠ€ν”„λ§ λΆ€νŠΈ 버전에 ν•΄λ‹Ήν•˜λŠ” μŠ€ν”„λ§ λΌμ΄λΈŒλŸ¬λ¦¬λ“€κ³Ό μ„œλ“œνŒŒν‹° λΌμ΄λΈŒλŸ¬λ¦¬λ“€λ„ ν˜Έν™˜λ˜λŠ” λ²„μ „μœΌλ‘œ λ‹€μš΄λ‘œλ“œ ν•΄μ€€λ‹€.

→ 버전이 λ‹¬λΌμ„œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” 상황을 미연에 λ°©μ§€ν•œλ‹€.

 

4. ν…ŒμŠ€νŠΈ ν™˜κ²½

μŠ€ν”„λ§ λΆ€νŠΈλ‘œ μƒμ„±ν•œ ν”„λ‘œμ νŠΈμ—λŠ” JUnit을 λΉ„λ‘―ν•œ ν…ŒμŠ€νŠΈ κ΄€λ ¨ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ 기본적으둜 포함

→ 컨트둀러 λ“± λ‹€μ–‘ν•œ 계측 ν΄λž˜μŠ€λ“€μ— κ΄€ν•œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μ‰½κ²Œ μž‘μ„± ν•  수 μžˆλ‹€.

 

5. λ‚΄μž₯ ν†°μΊ£

Tomcat μ„œλ²„λ₯Ό λ‚΄μž₯

→ main() λ©”μ†Œλ“œλ₯Ό 가진 클래슀λ₯Ό μ‹€ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ„œλ²„ ꡬ동

→ λΉ λ₯Έ μ‹€ν–‰ κ²°κ³Ό λ„μΆœ

 

6. λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ κ°€λŠ₯ν•œ JAR

앱을 κ°œλ°œν•˜κ³  ν…ŒμŠ€νŠΈκΉŒμ§€ λλƒˆλ‹€λ©΄ μ‹€μ œ 운영 μ„œλ²„μ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 배포해야 ν•œλ‹€.

λ°°ν¬ν•˜λ €λ©΄ Packaging을 ν•΄μ•Όν•˜λŠ”λ°,

일반 μžλ°” ν”„λ‘œμ νŠΈμ˜ 경우 JAR 파일둜 νŒ¨ν‚€μ§•ν•΄μ•Όν•˜κ³ 

μ›Ή ν”„λ‘œμ νŠΈμ˜ 경우 WAR 파일둜 νŒ¨ν‚€μ§• ν•΄μ•Ό ν•œλ‹€.

μŠ€ν”„λ§ λΆ€νŠΈλŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜λ„ WARκ°€ μ•„λ‹Œ JAR파일둜 νŒ¨ν‚€μ§•ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.

 

μ°Έκ³ 

κΉ€μ˜ν•œ, μŠ€ν”„링 핡심 원리 - 기본편 https://inf.run/ryWP

 

μŠ€ν”„λ§ 핡심 원리 - 기본편 - μΈν”„λŸ° | κ°•μ˜

μŠ€ν”„λ§ μž…λ¬Έμžκ°€ 예제λ₯Ό λ§Œλ“€μ–΄κ°€λ©΄μ„œ μŠ€ν”„λ§μ˜ 핡심 원리λ₯Ό μ΄ν•΄ν•˜κ³ , μŠ€ν”„λ§ κΈ°λ³ΈκΈ°λ₯Ό ν™•μ‹€νžˆ λ‹€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€., μŠ€ν”„λ§ 핡심 원리λ₯Ό μ΄ν•΄ν•˜κ³ , μ„±μž₯ν•˜λŠ” κ°œλ°œμžκ°€ λ˜μ–΄λ³΄μ„Έμš”! πŸ“’ μˆ˜κ°• μ „

www.inflearn.com

https://spring.io/guides/

 

Spring | Guides

 

spring.io

 

POJO(plain old java object)λž€?

POJO(Plain old java object)λž€ 무엇인가? μŠ€ν”„λ§ κ°œλ°œμ„ ν•˜λ©΄μ„œ POJO ν”„λ‘œκ·Έλž˜λ°μ΄λΌλŠ” μš©μ–΄λ₯Ό 자주 μ ‘ν•œλ‹€. μ΄μ œκΉŒμ§€ λŠλ‚Œμ μœΌλ‘œ νŠΉμ • κ·œμ•½μ— μ’…μ†λ˜μ§€ μ•ŠλŠ” μžλ°” 객체 μ •λ„λ‘œ 이해해왔닀. 이 ν¬μŠ€νŒ…μ—

happyer16.tistory.com