πŸ“Spring/Spring boot/Spring Framework 차이

leejihyeonΒ·2026λ…„ 5μ›” 13일

πŸ“… λ‚ μ§œ: 2026λ…„ 5μ›” 13일


🎯 였늘 κ³΅λΆ€ν•œ 핡심 λ‚΄μš©

  • κ°œλ… 정립 : Spring, Spring Framework, Spring Boot의 μ •μ˜μ™€ 차이점 뢄석

πŸ’» ν•™μŠ΅ λ‚΄μš© 정리

πŸš€Spring bootλž€?

  • μ›Ή μ„œλ²„λ₯Ό μ‰½κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” 도ꡬ μƒμžμ΄λ‹€.

  • λ³΅μž‘ν•œ μ„€μ • 없이 λΉ λ₯΄κ²Œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 μžˆλ„λ‘ 도와쀀닀.

  • 일반 java둜 μ›Ή μ„œλ²„λ₯Ό λ§Œλ“€λ €λ©΄ μˆ˜λ§Žμ€ μ„€μ •κ³Ό μ½”λ“œκ°€ ν•„μš”ν•˜μ§€λ§Œ, Spring bootλ₯Ό μ‚¬μš©ν•˜λ©΄ 단 λͺ‡ μ€„λ‘œ μ›Ή μ„œλ²„λ₯Ό ꡬ동할 수 μžˆλ‹€.

  • νŠΉμ§•

    • λ‚΄μž₯ μ„œλ²„(Embedded Tomcat) : λ³„λ„μ˜ μ›Ή μ„œλ²„λ₯Ό μ„€μΉ˜ν•˜κ±°λ‚˜ μ„€μ •ν•  ν•„μš”μ—†μ΄, main() λ©”μ„œλ“œλ§Œ μ‹€ν–‰ν•˜λ©΄ λ°”λ‘œ μ›Ή μ„œλ²„κ°€ λœ¬λ‹€.
    • μžλ™ μ„€μ •(Auto Configuration) : @SpringBootApplication μ–΄λ…Έν…Œμ΄μ…˜ ν•˜λ‚˜λ‘œ 자주 μ“°μ΄λŠ” μ˜€ν”ˆ μ†ŒμŠ€ 라이브러리(JPA, Security λ“±)λ₯Ό μŠ€ν”„λ§μ΄ μ•Œμ•„μ„œ μ„ΈνŒ…ν•œλ‹€.
    • μŠ€νƒ€ν„°(Starter) μ˜μ‘΄μ„± : μͺΌκ°œμ Έ 있던 μˆ˜λ§Žμ€ 라이브러리 섀정을 νŒ¨ν‚€μ§€ ν•˜λ‚˜(Spring-boot-starter-webλ“±)둜 λ¬Άμ–΄μ„œ 관리해 μ€€λ‹€.
@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);  // μ›Ή μ„œλ²„ μ‹œμž‘!
    }
}

🌿Springμ΄λž€?

  • λ‹€λ₯Έ μ‚¬λžŒμ˜ μ½”λ“œλ₯Ό μ°Έμ‘°ν•˜κΈ° 쉽고 νŽΈλ¦¬ν•œ ꡬ쑰둜 κΈ°μˆ λ“€μ„ 더 μ‰½κ²Œ μ‚¬μš©ν•΄μ£ΌλŠ” μ˜€ν”ˆμ†ŒμŠ€ ν”„λ ˆμž„μ›Œν¬μ΄λ‹€.
    • 예 : IoC μ»¨ν…Œμ΄λ„ˆ 제곡
  • κ±°λŒ€ν•œ μžλ°” λ°±μ—”λ“œ 개발 μƒνƒœκ³„ κ·Έ 자체λ₯Ό λœ»ν•œλ‹€.
  • νŠΉμ • 기술 ν•˜λ‚˜λ§Œμ„ μ§€μΉ­ν•˜κΈ°λ³΄λ‹€ Spring Framework와 Spring Bootλ₯Ό λΉ„λ‘―ν•˜μ—¬ μžλ°” κ°œλ°œμ„ νŽΈλ¦¬ν•˜κ²Œ ν•΄μ£ΌλŠ” λͺ¨λ“  ν•˜μœ„ ν”„λ‘œμ νŠΈλ“€μ„ μ•„μš°λ₯΄λŠ” 단어이닀.

μš”μ¦˜ Spring이라고 ν•œλ‹€λ©΄ Spring이 μ•„λ‹ˆλΌ Spring Bootλ₯Ό λœ»ν•œλ‹€.


🌱Spring Frameworkμ΄λž€?

  • μžλ°” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ κ°€μž₯ 기본이 λ˜λŠ” 핡심 λΌˆλŒ€(기반 기술)이닀.
  • 객체의 생성과 의쑴 관계λ₯Ό μŠ€ν”„λ§μ΄ λŒ€μ‹  κ΄€λ¦¬ν•΄μ£ΌλŠ” IoC/DI, 곡톡 관심사λ₯Ό λΆ„λ¦¬ν•˜λŠ” AOP λ“± λ°±μ—”λ“œ μ•„ν‚€ν…μ²˜μ˜ 근간이 λ˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • ν•œκ³„ : κΈ°λŠ₯은 κ°•λ ₯ν•˜μ§€λ§Œ κ°œλ°œμžκ°€ ν†°μΊ£ μ„œλ²„λ₯Ό 직접 연동해야 ν•˜κ³ , 초기 인프라 섀정을 ν•˜λ‚˜λΆ€ν„° μ—΄κΉŒμ§€ μˆ˜λ™μœΌλ‘œ ν•΄μ•Ό ν•΄μ„œ μ§„μž… μž₯벽이 λ†’μ•˜λ‹€.

πŸ“Šκ° 차이점

ꡬ뢄Spring FrameworkSpring Boot
κ°œλ…μ  μœ„μΉ˜μžλ°” λ°±μ—”λ“œ 객발의 핡심 μ—”μ§„ 역할을 ν•˜λŠ” 기반 기술Spring Frameworkλ₯Ό νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•˜λ„λ‘ λ•λŠ” ν™•μž₯ 도ꡬ
μ›Ή μ„œλ²„(Tomcat)λ‚΄μž₯ μ„œλ²„κ°€ μ—†μŒ(외뢀에 톰캣을 직접 μ„€μΉ˜ν•˜κ³  μˆ˜λ™ 연동내μž₯ μ„œλ²„(Embedded Tomcat) νƒ‘μž¬λ‘œ 별도 μ„€μΉ˜ 없이 μ¦‰μ‹œ ꡬ동
인프라 μ„€μ •λŒ€λŸ‰μ˜ XML λ˜λŠ” Java Coγ…œfig 섀정을 κ°œλ°œμžκ°€ 직접 μž‘μ„±μŠ€νƒ€ν„°(Starter)νŒ¨ν‚€μ§€μ™€ μžλ™μ„€μ •(Auto Config)으둜 μƒλž΅ κ°€λŠ₯
탄생 λͺ©μ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 μ™Έμ—λŠ” 무거운 기술 처리 뢀담을 ν•΄κ²°μŠ€ν”„λ§ ν”„λ‘œμ νŠΈμ˜ 초기 ꡬ죽 λΉ„μš©μ„ 쀄이고 생산성 κ·ΉλŒ€ν™”

β†’ πŸ’‘ν•œμ€„ μš”μ•½ : Spring은 μžλ°” 개발 도ꡬ듀을 λ‹€ λͺ¨μ•„놓은 전체 λΈŒλžœλ“œμ΄κ³ , Spring Framework κ·Έ λΈŒλžœλ“œμ˜ 쀑심이 λ˜λŠ” 핡심 기술이며 Spring BootλŠ” λˆ„κ΅¬λ‚˜ λ²„νŠΌ ν•˜λ‚˜λ‘œ λ°”λ‘œ μ“Έ 수 있게 λͺ¨λ‹ˆν„°μ™€ ν‚€λ³΄λ“œκΉŒμ§€ λ‹€ μ‘°λ¦½ν•΄μ„œ λ‚˜μ˜¨ 컴퓨터 μ™„μ œν’ˆμ΄λ‹€.


πŸ”μΆ”κ°€λ‘œ μ•Œμ•„λ³΄κΈ°

λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν•˜μœ„ ν”„λ‘œμ νŠΈ(ν˜Ήμ€ λͺ¨λ“ˆ)의 차이

μš°λ¦¬κ°€ ν”νžˆ λ§ν•˜λŠ” 라이브러리(Library)λŠ” Lombokμ΄λ‚˜ Jackson처럼 "νŠΉμ • κΈ°λŠ₯ ν•˜λ‚˜λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ κ°€μ Έλ‹€ μ“°λŠ” μ½”λ“œ 쑰각/도ꡬ"에 가깝닀.

반면 μŠ€ν”„λ§μ˜ Spring Securityλ‚˜ Spring DataλŠ” λ‹¨μˆœν•œ 도ꡬ ν•œλ‘κ°œκ°€ μ•„λ‹ˆλΌ ν•˜λ‚˜μ˜ κ±°λŒ€ν•œ ν”„λ ˆμž„μ›Œν¬ μˆ˜μ€€μ˜ 규λͺ¨λ₯Ό κ°€μ§€κ³  μžˆλ‹€.

1. 규λͺ¨μ˜ λ…λ¦½μ„±μ˜ 차이

  • 라이브러리 : 단일 λͺ©μ μ„ κ°€μ§„ λΆ€ν’ˆ(예 : JSON νŒŒμ‹±λ§Œ ν•΄μ£ΌλŠ” 라이브러리)

  • μŠ€ν”„λ§ ν•˜μœ„ ν”„λ‘œμ νŠΈ : 자체둜 μˆ˜λ§Žμ€ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ 내뢀에 ν¬ν•¨ν•˜κ³  μžˆλŠ” κ±°λŒ€ν•œ 독립 λ‹¨μœ„

    • 예 : Spring Securityμ•ˆμ—λŠ” 인증, 인가, μ•”ν˜Έν™”, μ„Έμ…˜ 관리 λ“±μ˜ κΈ°λŠ₯을 ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ λ“€μ–΄κ°€ μžˆλ‹€.
    🌿 SPRING (μŠ€ν”„λ§ μƒνƒœκ³„ 전체)
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚                                                        β”‚
     β”‚  🌱 Spring Framework (λͺ¨λ“  κ²ƒμ˜ 쀑심이 λ˜λŠ” 핡심 μ—”μ§„)    β”‚
     β”‚                                                        β”‚
     β”‚  πŸš€ Spring Boot (섀정을 μžλ™ν™”ν•΄μ£ΌλŠ” νŽΈλ¦¬ν•œ 도ꡬ)       β”‚
     β”‚                                                        β”‚
     β”‚  πŸ” Spring Security (λ³΄μ•ˆ, 인증, 인가 μ „λ‹΄ λΆ€μ„œ)        β”‚
     β”‚                                                        β”‚
     β”‚  πŸ—„οΈ Spring Data (JPA, Redis λ“± DB μ ‘κ·Ό μ „λ‹΄ λΆ€μ„œ)     β”‚
     β”‚                                                        β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


🧠 였늘의 볡슡 λ©”λͺ¨ (β˜…μ€‘μš”!)

  • πŸ” ν—·κ°ˆλ Έλ˜ λΆ€λΆ„ μ •λ¦¬ν•˜κΈ°

    • Spring : μžλ°” λ°±μ—”λ“œ κ°œλ°œμ„ μœ„ν•œ 큰 μƒνƒœκ³„
      • μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ : μ›Ή 개발의 핡심 기반
      • μŠ€ν”„λ§ λΆ€νŠΈ : ν”„λ ˆμž„μ›Œν¬λ₯Ό 쉽고 λΉ λ₯΄κ²Œ μ“°κ²Œ ν•΄μ£ΌλŠ” 돋ꡬ
      • Spring Data : DBλ₯Ό μ‰½κ²Œ λ‹€λ£¨κ²Œ ν•΄μ£ΌλŠ” 업무 도ꡬ
      • μŠ€ν”„λ§ μ‹œνλ¦¬ν‹° : 인증/인가λ₯Ό λ‹΄λ‹Ήν•˜λŠ” λ³΄μ•ˆ κΈ°λŠ₯
      • Spring MVC : μ›Ή μš”μ²­/응닡을 처리λ₯Ό λ‹΄λ‹Ήν•˜λŠ” ꡬ쑰

  • πŸ“š λ‹€μ‹œ λ³Ό κ°œλ… 적어두기

    • ν”„λ ˆμž„μ›Œν¬μ™€ λΆ€νŠΈμ˜ 차이점 : 기반 기술과 이λ₯Ό μžλ™ν™”ν•΄μ£ΌλŠ” 편의 도ꡬ
    • μŠ€ν”„λ§ λΆ€νŠΈμ˜ 핡심 ν‚€μ›Œλ“œ
      • λ‚΄μž₯ μ„œλ²„, μžλ™ μ„€μ •, μŠ€νƒ€ν„°

  • πŸš€ μΆ”κ°€ λ³΅μŠ΅ν•  λ‚΄μš© 적기

    1. DB μ ‘κ·Ό κΈ°μˆ λ“€μ˜ 핡심 차이점 μš”μ•½

    • JDBC 방식 : μžλ°” μ½”λ“œλ‘œ λ³΅μž‘ν•œ SQL문을 맀번 직접 λ‹€ μž‘μ„±ν•΄μ„œ DB와 ν†΅μ‹ ν•˜λŠ” 과거의 방식 (손이 많이 κ°€κ³  λ²ˆκ±°λ‘œμ›€).
    • JPA 방식 : SQL 쀑심이 μ•„λ‹ˆλΌ 'μžλ°” 객체' μ€‘μ‹¬μœΌλ‘œ DBλ₯Ό λ‹€λ£° 수 있게 ν•΄μ£ΌλŠ” 기술 ν‘œμ€€ (ORM).
    • Spring Data JPA 방식 : JPAλ₯Ό μ‚¬μš©ν•  λ•Œ μ§œμ•Ό ν•˜λŠ” 반볡적인 μžλ°” μ½”λ“œ(CRUD 클래슀)λ§ˆμ € μ™„μ „νžˆ μžλ™ν™”ν•΄ μ£ΌλŠ” μŠ€ν”„λ§μ˜ νŽΈλ¦¬ν•œ 도ꡬ.

    2. JPA와 Spring Data JPA의 λͺ…ν™•ν•œ 차이

    • JPAλŠ” 'κ°œλ…μ΄μž ν‘œμ€€ μΈν„°νŽ˜μ΄μŠ€'μž…λ‹ˆλ‹€.
      • "μžλ°” 객체λ₯Ό DB ν…Œμ΄λΈ”κ³Ό μ΄λ ‡κ²Œ μ—°κ²°ν•΄μ„œ μ“°μž!"라고 μ •μ˜ν•΄ λ‘” μ•½μ†μž…λ‹ˆλ‹€.
    • Spring Data JPAλŠ” 개발자λ₯Ό λ•λŠ” 'μ‹€μ œ 도ꡬ'μž…λ‹ˆλ‹€.
      • μ›λž˜ JPA만 μ“°λ©΄ κ°œλ°œμžκ°€ λ ˆν¬μ§€ν† λ¦¬ κ΅¬ν˜„ 클래슀λ₯Ό 직접 μ½”λ”©ν•΄μ„œ EntityManagerλ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.
      • ν•˜μ§€λ§Œ 이 도ꡬλ₯Ό μ“°λ©΄ κ°œλ°œμžκ°€ μžλ°” 클래슀λ₯Ό μ§€ ν•„μš” 없이 μΈν„°νŽ˜μ΄μŠ€λ§Œ μ„ μ–Έν•΄ 두면 μŠ€ν”„λ§μ΄ λ‚΄λΆ€ κ΅¬ν˜„ μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ λ‹€ μ±„μ›Œ λ°”μ³μ€λ‹ˆλ‹€.
    • κ²°λ‘  : μ½”λ“œκ°€ 획기적으둜 쀄어듀고, λ‹¨μˆœ 반볡 μž‘μ—…μ΄ μ‚¬λΌμ Έμ„œ λ°±μ—”λ“œ 개발 속도가 μ••λ„μ μœΌλ‘œ λΉ¨λΌμ§‘λ‹ˆλ‹€.

0개의 λŒ“κΈ€