๐Ÿ”ฅJava Spring Framework & Spring Boot : ์‹ค์ œ๋กœ ์ดํ•ด๊ฐ€ ๋˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์ง์„ค์ ์ธ ๊ฐ€์ด๋“œ

๋ฐœํ–‰: (2025๋…„ 12์›” 12์ผ ์˜คํ›„ 12:26 GMT+9)
7 min read
์›๋ฌธ: Dev.to

Source: Dev.to

Spring Framework & Spring Boot ์€ ์€ํ–‰, ํ•€ํ…Œํฌ, ํ†ต์‹ , ์ „์ž์ƒ๊ฑฐ๋ž˜, ๋ฌผ๋ฅ˜, ์ •๋ถ€ ํ”Œ๋žซํผ ๋“ฑ ์ „ ์„ธ๊ณ„ ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์„ ์กฐ์šฉํžˆ ๊ตฌ๋™ํ•ฉ๋‹ˆ๋‹ค.

5๋…„ ์ „, ์ฒ˜์Œ์œผ๋กœ Spring ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ์••๋„์ ์œผ๋กœ ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค: ์–ด๋…ธํ…Œ์ด์…˜, ๋นˆ, IoC, DI, ์ปจํŠธ๋กค๋Ÿฌ, ์„ค์ •โ€ฆ โ€œSpring ์œผ๋กœ ์ด ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๋ผโ€๋Š” ๋งค๋‹ˆ์ €์˜ ๋ง์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” โ€œ๋„คโ€๋ผ๊ณ  ๋Œ€๋‹ตํ–ˆ์ง€๋งŒ ์†์œผ๋กœ๋Š” โ€œSpring? ์–ด๋А Spring?โ€์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ฃ . ์„œ๋ธ”๋ฆฟ, JSP, Struts ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ๊ฒฝํ—˜๋„ ์žˆ๊ณ  MVC ๋ฅผ ์ดํ•ดํ–ˆ์œผ๋ฉฐ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ด ๋ณธ ์ ๋„ ์žˆ์—ˆ์ง€๋งŒ, Spring ์€ ๋งˆ์น˜ ๋‹ค๋ฅธ ํ–‰์„ฑ์—์„œ ์˜จ ์™ธ๊ณ„ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค.

STS ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด์—ˆ์„ ๋•Œ ํ™”๋ฉด์€ ๋‚ฏ์„  ๊ฐœ๋…๋“ค๋กœ ๊ฐ€๋“ํ–ˆ์Šต๋‹ˆ๋‹ค:

  • @Autowired
  • @Controller
  • @Component
  • beans
  • contexts
  • configurations
  • application.properties
  • XML vs. annotation
  • IoC container

์ €๋Š” ๊ณ„์† ์Šค์Šค๋กœ์—๊ฒŒ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค:

  • โ€œmain() ์€ ์–ด๋””์— ์žˆ์ง€?โ€
  • โ€œ๋ˆ„๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์ง€?โ€
  • โ€œ์ด๊ฒŒ ๋ฌด์Šจ ๋งˆ๋ฒ•์ธ๊ฐ€? ์™œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€๊ฐ€?โ€

๋ฌธ์„œ, ๋ธ”๋กœ๊ทธ, StackOverflow ์—์„œ๋Š” ๋”์šฑ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์šฉ์–ด๋“ค์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค: Inversion of Control, Dependency Injection, AOP, bean lifecycle, application context. ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ์‹œ๋„ ๋์— ๋“œ๋””์–ด @RestController ๋ฅผ ๋งŒ๋“ค์–ด โ€œHello Worldโ€ ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์„ ๋•Œ๋Š” ๋น„๋ฐ€ ์ฝ”๋“œ๋ฅผ ํ•ด๋…ํ•œ ๋“ฏํ–ˆ์ง€๋งŒ, ํ•™์Šต ๊ณก์„ ์€ ๊ฐ€ํŒŒ๋ฅด๊ณ  ์†”์งํžˆ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ๋Š” ์˜ค๋Š˜๋‚ ์˜ ์ดˆ๋ณด์ž๋“ค์ด ์ €์™€ ๊ฐ™์€ ํ˜ผ๋ž€์„ ๊ฒช์ง€ ์•Š๋„๋ก, ์ „ํ†ต์ ์ธ Java ๊ธฐ์ˆ ์—์„œ ์˜จ ์‚ฌ๋žŒ์ด๋ผ๋„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

Spring ์ด ์™œ ์กด์žฌํ• ๊นŒ?

Spring ์ด์ „์— Java ๊ฐœ๋ฐœ์ž๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ๊ณผ๋„ํ•œ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ
  • ์ˆ˜๋™ ๊ฐ์ฒด ๊ด€๋ฆฌ
  • ๋ฐ˜๋ณต์ ์ธ ์„ค์ •(์ฃผ๋กœ XML)
  • ๊ฐ•ํ•œ ๊ฒฐํ•ฉ๋„์™€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ
  • ๋ฌด๊ฑฐ์šด J2EE ์„œ๋ฒ„(WebSphere, WebLogic)

๊ทธ ๊ฒฐ๊ณผ ๋นŒ๋“œ๊ฐ€ ๋А๋ ค์ง€๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ขŒ์ ˆ๊ฐ์ด ์ปค์กŒ์Šต๋‹ˆ๋‹ค.

Rod Johnson ์˜ 2002๋…„ ์ €์„œ Expert Oneโ€‘onโ€‘One J2EE Design and Development ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋” ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ๋ฒ•์„ ์ œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ
  • ์˜์กด์„ฑ ์ฃผ์ž…
  • EJB ๋Œ€์‹  POJO

2003๋…„์— ์ถœ์‹œ๋œ Spring ์€ โ€œ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Java ๋ฅผ ๋” ๊ฐ„๋‹จํ•˜๊ณ , ์ƒ์‚ฐ์ ์ด๋ฉฐ, ์ฆ๊ฒ๊ฒŒ ๋งŒ๋“ ๋‹คโ€ ๋ผ๋Š” ๋ชฉํ‘œ๋ฅผ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ๋ฌด๊ฑฐ์šด EJB ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฒฝ๋Ÿ‰ IoC ์ปจํ…Œ์ด๋„ˆ๋กœ, XMLโ€‘์ค‘์‹ฌ ์„ค์ •์—์„œ ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ ์ž๋™ ์„ค์ •์œผ๋กœ, ์ˆ˜๋™ ๋ฐฐ์„ ์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…์œผ๋กœ์˜ ๋ณ€ํ™”๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด Java (Spring ์ด์ „)Spring ์‚ฌ์šฉ ์‹œ
๋ฌด๊ฑฐ์šด EJB ์ปจํ…Œ์ด๋„ˆ๊ฒฝ๋Ÿ‰ IoC ์ปจํ…Œ์ด๋„ˆ
XML์ด everywhere์–ด๋…ธํ…Œ์ด์…˜ & ์ž๋™ ์„ค์ •
ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์›€์‰ฌ์šด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
์ˆ˜๋™ ๊ฐ์ฒด ๋ฐฐ์„ ์˜์กด์„ฑ ์ฃผ์ž…
๋А๋ฆฌ๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ฐฐํฌ์ž„๋ฒ ๋””๋“œ ์„œ๋ฒ„๋กœ ๋น ๋ฅธ ์‹œ์ž‘
์—„๊ฒฉํ•˜๊ณ  ๊ฒฝ์ง๋œ ์„ค๊ณ„์œ ์—ฐํ•˜๊ณ  ๋ชจ๋“ˆํ™”๋œ ์•„ํ‚คํ…์ฒ˜

Spring ์€ Java ๊ฐœ๋ฐœ์„ ํ˜„๋Œ€ํ™”ํ–ˆ๊ณ , ์ดํ›„ Spring Boot ๊ฐ€ ์ด๋ฅผ ๋”์šฑ ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

Spring Framework ๋ž€?

Spring Framework ์€ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋„๊ตฌ์™€ ๊ธฐ๋Šฅ๋“ค์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

  1. Dependency Injection (DI) โ€“ Spring ์ด ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•ด ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ€๋…์„ฑ ์žˆ๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. Inversion of Control (IoC) โ€“ ์ฝ”๋“œ๊ฐ€ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ๋ฆ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒƒ์„ ์„ ์–ธํ•˜๋ฉด Spring ์ด ์ œ๊ณตํ•ด ์ค๋‹ˆ๋‹ค.

์ฃผ์š” ๋ชจ๋“ˆ

  • Spring MVC โ€“ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • Spring Data JPA โ€“ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ
  • Spring Security โ€“ ์ธ์ฆ, JWT, OAuth
  • Spring AOP โ€“ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ
  • Spring Test โ€“ ํ…Œ์ŠคํŠธ ์œ ํ‹ธ๋ฆฌํ‹ฐ

Spring Boot ๋ž€?

Spring Boot (2014 ์ถœ์‹œ)๋Š” Spring ์œ„์— ๊ตฌ์ถ•๋˜์–ด ์ด์ „์— IKEA ์ฑ…์ƒ์„ ์กฐ๋ฆฝํ•˜๋“ฏ์ด ๋ณต์žกํ–ˆ๋˜ ์„ค์ •์„ ์—†์• ์ค๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  • Zero configuration โ€“ ํด๋ž˜์ŠคํŒจ์Šค ์˜์กด์„ฑ์— ๊ธฐ๋ฐ˜ํ•œ ์ž๋™ ์„ค์ •
  • Embedded servers โ€“ Tomcat, Jetty, Undertow ๊ฐ€ ํฌํ•จ๋œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ JAR
  • Starters โ€“ ์˜๊ฒฌ์ด ๋ฐ˜์˜๋œ ์˜์กด์„ฑ ๋ฒˆ๋“ค(์˜ˆ: spring-boot-starter-web)
  • Actuator โ€“ ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€๋ฆฌ ์—”๋“œํฌ์ธํŠธ
  • Simplified deployment โ€“ WAR ํŒŒ์ผ ์—†์ด, ์™ธ๋ถ€ ์„œ๋ฒ„ ์„ค์ • ์—†์ด ๋ฐฐํฌ ๊ฐ€๋Šฅ
FeatureSpring FrameworkSpring Boot
SetupHeavySuper light
ConfigurationManualAutoโ€‘config
PackagingWARJAR
Embedded ServerNoYes
SpeedSlowerFAST
Ideal ForComplex, legacy appsMicroservices, cloud, DevOps

๋งˆ๋ฌด๋ฆฌ ์ƒ๊ฐ โ€“ Spring Boot ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ 

  • ๊ฑฐ๋Œ€ํ•œ ์ฑ„์šฉ ์‹œ์žฅ โ€“ ์ „ ์„ธ๊ณ„ ๊ธฐ์—…์ด Spring/Boot ์— ์˜์กดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ œ ์˜ํ–ฅ๋ ฅ โ€“ ์€ํ–‰๋ถ€ํ„ฐ ์ •๋ถ€ ํ”Œ๋žซํผ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๊นจ๋—ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ ์‰ฌ์šด ์ฝ”๋“œ โ€“ DI ์™€ IoC ๊ฐ€ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œโ€‘์šฐ์„  ์•„ํ‚คํ…์ฒ˜ โ€“ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ์— ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฏธ๋ž˜ ์ง€ํ–ฅ์ ์ธ ์Šคํ‚ฌ โ€“ ์ง€์†์ ์ธ ์ง„ํ™”์™€ ๊ฐ•๋ ฅํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ, Spring Boot ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฑด ์ •๋ง ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค!

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

Spring Boot๋ฅผ ์‚ฌ์šฉํ•œ RESTful Web API ๊ตฌํ˜„

REST API๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐ€์žฅ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Spring Boot๋Š” productionโ€‘ready ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ด๋ฅผ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

React์™€ Spring Boot๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์Šคํƒ Pokรฉdex ๊ฒ€์ƒ‰ ์—”์ง„ ๊ตฌ์ถ•

์†Œ๊ฐœ ๋‚˜๋Š” ์ตœ๊ทผ์— API ํ†ตํ•ฉ ๋ฐ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์„ ์—ฐ์Šตํ•˜๊ธฐ ์œ„ํ•ด ํ’€์Šคํƒ Pokรฉdex ๊ฒ€์ƒ‰ ์—”์ง„์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค...

Java Spring Boot๋ฅผ ์‚ฌ์šฉํ•œ ๊ธฐ๋ณธ CRUD

Spring Boot๋ž€ ๋ฌด์—‡์ธ๊ฐ€? Spring Boot๋Š” ์›น ๋ฐ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” Java ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์„ค์ •๊ณผ ๊ตฌ์„ฑ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ์ค๋‹ˆ๋‹ค.

Part 2: ์ฒซ ๋ฒˆ์งธ Django ํ”„๋กœ์ ํŠธ ์„ค์ •

์ด๊ฒƒ์€ โ€œLearn Backend Development by Building a Social Media Appโ€ ์‹œ๋ฆฌ์ฆˆ์˜ ํŒŒํŠธ 2์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์ด์ „ ํŒŒํŠธ์—์„œ๋Š” ๋ฐฑ์—”๋“œ๊ฐ€ ์‹ค์ œ๋กœ ๋ฌด์—‡์ธ์ง€ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.