Skip to content

Latest commit

Β 

History

History
35 lines (25 loc) Β· 4.48 KB

File metadata and controls

35 lines (25 loc) Β· 4.48 KB

06. Spring Boot

μ „μ‚°μ—μ„œ λΆ€νŠΈ(Boot λ˜λŠ” Booting)λΌλŠ” μš©μ–΄λŠ” 컴퓨터(OS)κ°€ 전원이 μΌœμ§€λŠ” μˆœκ°„λΆ€ν„° μ‚¬μš©μžλ‘œ λΆ€ν„° λͺ…령을 받을 μ€€λΉ„κ°€ 될 λ•ŒκΉŒμ§€ κ±·μΉ˜λŠ” 일련의 과정을 μΌμΌ£λŠ”λ‹€. 이 μš©μ–΄λŠ” μ›λž˜ κ°€μ£½ μ‹ λ°œμ— λ°œλ’·κΏˆμΉ˜λ₯Ό λ„£κΈ° 쉽도둝 ν•˜κΈ°μœ„ν•΄ λ‹¬λ €μžˆλŠ” λΆ€νŠΈμŠ€νŠΈλž©(Bootstrap)μ—μ„œ μœ λž˜λ˜μ—ˆλŠ”λ° "μ–΄λ–€ 일을 μ‹œμž‘ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λͺ¨λ“  μ€€λΉ„λ₯Ό λ§ˆμΉœλ‹€" λŠ” 의미둜 μ‚¬μš©λœλ‹€. μŠ€ν”„λ§ λΆ€νŠΈ(Spring Boot)의 λΆ€νŠΈμ˜ μ˜λ―Έλ„ 이와 크게 λ‹€λ₯΄μ§€ μ•Šλ‹€. μŠ€ν”„λ§ λΆ€νŠΈλŠ” μŠ€ν”„λ§ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹œμž‘λ˜κΈ° μœ„ν•œ λͺ¨λ“  μ€€λΉ„λ₯Ό μžλ™μœΌλ‘œ λ§ˆμ³μ£ΌλŠ” 라이브러리 λ˜λŠ” 도ꡬ(Tool)이닀.

μŠ€ν”„λ§ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 뿐만 μ•„λ‹ˆλΌ λŒ€λΆ€λΆ„μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€ν–‰(μ‹œμž‘)되기 μœ„ν•΄ ν•„μš”ν•œ 것은 λ‹€μŒμ˜ 두 가지인 것 κ°™λ‹€.

  1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κΈ°λŠ₯(λΉ„μ¦ˆλ‹ˆμŠ€) κ΅¬ν˜„ μ½”λ“œ
  2. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„€μ •

μžλ°” μ—”ν„°ν”„λΌμ΄μ¦ˆ κ°œλ°œμ—μ„œλŠ” μŠ€ν”„λ§λΏλ§Œ μ•„λ‹ˆλΌ λ§Žμ€ κ°•λ ₯ν•œ μžλ°” 라이브러리 λ˜λŠ” 도ꡬ듀이 μ‘΄μž¬ν•œλ‹€. ν•˜μ§€λ§Œ ν˜„μž¬κΉŒμ§€λŠ” 이 것듀이 λ‹€μ–‘ν•˜κ³  λ³΅μž‘ν•œ μ—”ν„°ν”„λΌμ΄μ¦ˆμ˜ λΉ„μ¦ˆλ‹ˆμŠ€ κ΅¬ν˜„ μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜κ±°λ‚˜ μž‘μ„±ν•΄ λ‚΄μ§€λŠ” λͺ»ν•œλ‹€. ν•˜μ§€λ§Œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 섀정은 μžλ™μœΌλ‘œ ν•  수 μžˆλ‹€. κ·Έ μ΄μœ λŠ” κ·Έ 섀정듀이 λ³΅μž‘ν•˜κΈ°λŠ” ν•˜μ§€λ§Œ μœ μ‚¬ν•˜κ³  반볡적이며 μƒνˆ¬μ μ΄κΈ° λ•Œλ¬Έμ΄λ‹€. μŠ€ν”„λ§ μžλ°” μ—”ν„°ν”„λΌμ΄μ¦ˆ κ°œλ°œμ—μ„œλŠ” POJO둜 EJB κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° λ•Œλ¬Έμ— μž‘μ„± μ½”λ“œλŠ” μ „λ°˜μ μœΌλ‘œ 가볍닀. 이에 λ°˜ν•΄ 개발 κ³Όμ •κ³Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ성(μ„€μ •)은 무겁고 λ³΅μž‘ν•˜λ‹€. 이λ₯Ό κ·Ήλ³΅ν•˜λ €λŠ” λ…Έλ ₯은 κΎΈμ€€νžˆ λ˜μ–΄ μ™”κ³  μŠ€ν”„λ§ λΆ€νŠΈλŠ” 이 문제λ₯Ό ν•΄κ²°ν–ˆλ‹€. μŠ€ν”„λ§ λΆ€νŠΈλŠ” κ°œλ°œμžκ°€ 직접 ν•˜λ˜ μŠ€ν”„λ§μ˜ λ³΅μž‘ν•˜κ³  반볡적인 섀정을 관둀에 λ”°λ₯΄λŠ” "μžλ™μ„€μ •(Automatic Configuration)" 으둜 μ œκ±°ν–ˆλ‹€.

ν•œνŽΈ, μŠ€ν”„λ§ 개발뿐만 μ•„λ‹ˆλΌ μžλ°” μ—”ν„°ν”„λΌμ΄μ¦ˆ κ°œλ°œμ—μ„œ 자주 제기되고 μžˆλŠ” λ¬Έμ œμ μ€ ν”„λ‘œμ νŠΈ λ˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬λ“€ κ°„μ˜ μ˜μ‘΄μ„± λ¬Έμ œλ‹€. 이 λ¬Έμ œλŠ” μ—¬κ°„ μ„±κ°€μ‹ κ²Œ μ•„λ‹ˆλ‹€. μ˜μ‘΄μ„± 버전을 잘λͺ» μ„ νƒν•΄μ„œ λΉŒλ“œκ°€ κΉ¨μ§€κ±°λ‚˜ μ‹€ν–‰ 쀑에 μ˜ˆμ™Έκ°€ λ°œμƒν•˜λŠ” 것은 μŠ€ν”„λ§ ν”„λ‘œμ νŠΈμ—μ„œλŠ” ν”ν•œ 일이라 μ„Έμ‚ΌμŠ€λŸ¬μšΈ 것도 μ—†λ‹€. κ°œλ°œμžκ°€ 직접 μ˜μ‘΄μ„± 이름과 버전을 λͺ…μ‹œν•¨μœΌλ‘œμ¨ λ°œμƒν–ˆλ˜ 이 문제λ₯Ό μŠ€ν”„λ§ λΆ€νŠΈλŠ” "μŠ€νƒ€ν„° μ˜μ‘΄μ„±(Stater Dependency)" 이라 λΆˆλ¦¬λŠ” κ²ƒμœΌλ‘œ μŠ€ν”„λ§ λΆ€νŠΈκ°€ 직접 κ΄€λ¦¬ν•˜κ³  κ°œλ°œμžλŠ” μŠ€νƒ€ν„° μ˜μ‘΄μ„±λ§Œ λͺ…μ‹œλ§Œ ν•˜λŠ” λ°©μ‹μœΌλ‘œ κΉ”λ”νžˆ ν•΄κ²°ν–ˆλ‹€.

μ•žμ˜ λ‚΄μš©μ„ 정리 μš”μ•½ν•˜λ©΄, μŠ€ν”„λ§ λΆ€νŠΈμ˜ 핡심 κΈ°μˆ μ€ λ‹€μŒ 두 κ°€μ§€λ‹€.

  1. μŠ€νƒ€ν„° μ˜μ‘΄μ„±(Stater Dependency)
  2. μžλ™μ„€μ •(Automatic Configuration)

그런데, λͺ¨λ“  것이 μžλ™μœΌλ‘œ μ„€μ •λœλ‹€κ³  νŽΈλ¦¬ν•˜κ³  쒋은 κ²ƒλ§Œμ€ μ•„λ‹ˆλ‹€. 직접 Java λ˜λŠ” XML둜 μ„€μ • μž‘μ—…μ„ ν•˜λ˜ 전톡적인 μŠ€ν”„λ§μ€ μ˜λ„ν•œλŒ€λ‘œ 그리고 μ„€μ •ν•œλŒ€λ‘œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— μ„€μ • μž‘μ—…μ΄ λ³΅μž‘ν•˜κ³  κ·€μ±¦κΈ°λŠ” ν•˜μ§€λ§Œ λ‚΄λΆ€μ—μ„œ μ–΄λ–€ 일이 μΌμ–΄λ‚˜λŠ” μ§€ μ•Œ 수 있고 문제 λŒ€μ‘λ„ 쉽닀. μŠ€ν”„λ§ λΆ€νŠΈμ˜ μžλ™μ„€μ •μ€ μ²˜μŒμ—λŠ” νŽΈλ¦¬ν•˜κ²Œ λŠκ»΄μ§ˆμ§€ λͺ¨λ₯΄κ² μ§€λ§Œ μŠ€ν”„λ§ λΆ€νŠΈλ₯Ό 잘 μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λ©΄ 전톡적인 μŠ€ν”„λ§λ³΄λ‹€ 더 μ–΄λ ΅κ³  문제 λŒ€μ‘λ„ μ–΄λ ΅λ‹€. μŠ€ν”„λ§ λΆ€νŠΈλ₯Ό 잘 μ‚¬μš©ν•˜λ €λ©΄ μŠ€ν”„λ§ 뿐만 μ•„λ‹ˆλΌ μŠ€ν”„λ§ λΆ€νŠΈ λ‚΄λΆ€μ—μ„œ μΌμ–΄λ‚˜λŠ” 일듀을 λ¨Όμ € μ΄ν•΄ν•˜κ³  μžˆμ–΄μ•Ό ν•œλ‹€. 또! λ°˜λ“œμ‹œ μ˜€ν•΄ν•˜μ§€ 말아야 ν•  것이 μžˆλ‹€. μŠ€ν”„λ§ λΆ€νŠΈκ°€ λͺ¨λ“  섀정을 μ•Œμ•„μ„œ λ‹€ ν•΄μ£ΌλŠ” 만λŠ₯의 섀정도ꡬ가 μ•„λ‹ˆλΌλŠ” 것이닀.

  1. μžλ™μ„€μ •μ„ 톡해 μž₯ν™©ν•˜κ³  반볡적인 섀정을 κ°„μ†Œν™”ν•œ 도ꡬ이지 λͺ¨λ“  섀정을 μ—†μ•€ 도ꡬ가 μ•„λ‹ˆλ‹€. λ³΅μž‘ν•˜κ³  무거운 μŠ€ν”„λ§ 섀정은 κ·ΈλŒ€λ‘œ μ‘΄μž¬ν•œλ‹€.
  2. μžλ™μ„€μ •μ„ μ˜€λ²„λΌμ΄λ“œ ν•˜κ±°λ‚˜ μ •λ°€ν•˜κ²Œ μ‘°μ •ν•˜λŠ” "λ―Έμ„Έμ„€μ •" μž‘μ—…μ΄ λŒ€λΆ€λΆ„μ˜ κ°œλ°œμ—μ„œ ν•„μš”ν•˜λ‹€.
  3. μžλ™μ„€μ •κ³Ό λ―Έμ„Έμ„€μ •μœΌλ‘œ μŠ€ν”„λ§μ˜ λͺ¨λ“  섀정을 λ‹€ ν•  수 μ—†λ‹€. κ²½μš°μ— 따라 전톡적인 μ„€μ • 방식이 ν•„μš”ν•œ κ²½μš°λ„ λ§Žλ‹€.

00. Spring Initializr [springboot-helloworld]

01. Bootstrapping & Configuration Class [springboot-example]

02. @SpringBootApplication & @SpringBootTest [springboot-myapplication]

03. Spring Boot Web Application(Spring MVC) [springboot-webmvc]