[Spring boot] IntelliJ IDEA๋ฅผ ์ด์šฉํ•œ Spring boot ํ”„๋กœ์ ํŠธ ์‹œ์ž‘

๋ฐ˜์‘ํ˜•

๊ธฐ์กด์˜ Java ์–ธ์–ด๋ฅผ ์ด์šฉํ•ด์„œ ์›น ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ๋Š” Tomcat, Jetty ๋“ฑ๊ณผ ๊ฐ™์€ Servlet Container๋ฅผ ์„ค์น˜ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ ๋‚ด์— ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ–ˆ๊ณ , ๋Œ€ํ‘œ์ ์ธ Java Application Framework์ธ Spring ์—ญ์‹œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์ด ๋งŒ๋งŒ์น˜ ์•Š๋‹ค๋Š” ์ด์œ ๋กœ Java ์–ธ์–ด๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๋Š” ๋ถ„์ด ์•„๋‹Œ ๋ถ„๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์›น ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋น„๊ต์  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์ด ์‰ฌ์šด Node.js์˜ Express๋‚˜ Python์˜ Django ๋“ฑ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ฃ .

 

Spring boot

Spring boot๋Š” ์ด๋Ÿฌํ•œ Spring์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์˜ ์–ด๋ ค์›€๊ณผ ๋ถ€๋‹ด์„ ๋œ์–ด์ฃผ๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์„ ์ตœ์†Œํ™” ํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๋จผ์ € Spring boot์˜ ํŠน์ง•๋ถ€ํ„ฐ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด์ž๋ฉด..

  • Embedded Tomcat์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด, Jetty ๋“ฑ์„ ์‚ฌ์šฉํ•ด ๋…๋ฆฝ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•œ Spring Application ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ํ†ตํ•ฉ ์Šคํƒ€ํ„ฐ๋ฅผ ์ œ๊ณตํ•˜์—ฌ Maven, Gradle ๋“ฑ์˜ ๋””ํŽœ๋˜์‹œ ๊ตฌ์„ฑ์„ ๊ฐ„์†Œํ™” ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Starter ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ž๋™ํ™”๋œ ์Šคํ”„๋ง ์„ค์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฒˆ๊ฑฐ๋กœ์šด XML ์„ค์ •์„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • JAR ํŒŒ์ผ ํฌ๋งท์„ ์‚ฌ์šฉํ•ด Java ์˜ต์…˜๋งŒ์œผ๋กœ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Spring Actuator๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์œ„ ํŠน์ง•๋“ค ์ค‘์—์„œ ์ œ๊ฐ€ ์ง„ํ•˜๊ฒŒ ์น ํ•ด ๋†“์€ ๋‘ ๊ฐ€์ง€ ์‚ฌํ•ญ์€ ๊ต‰์žฅํžˆ ๋งค๋ ฅ์ ์ด๋ผ๊ณ  ๋ด…๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ Spring์€ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ๋“ฑ์ด ๋ชจ๋‘ XML ์„ค์ •์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด, ์ฝ”๋“œ๋ฅผ ๋‘ ๊ตฐ๋ฐ๋ฅผ ๋ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•œ ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ Java ์ฝ”๋“œ์—์„œ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ์˜์กด์„ฑ ์ฃผ์ž…์„ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๊ณ , ๋˜ JAR ํŒŒ์ผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋กํ•˜์—ฌ Tomcat์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ , Java ์˜ต์…˜๋งŒ์œผ๋กœ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ๊ทธ๋งŒํผ ํ”„๋กœ๋•์…˜์— ๋Œ€ํ•œ ์ž์œ ๋„๋„ ๋†’์˜€๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

How to start

๊ทธ๋Ÿผ ์ด์ œ IntelliJ IDEA๋ฅผ ์ด์šฉํ•ด Spring boot ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, IntelliJ IDEA๋ฅผ ์‹คํ–‰์‹œํ‚จ ํ›„, Create New Project ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

์ขŒ์ธก์—์„œ Spring Initializr ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค. Spring Initializr๋Š” ๊ฐ„๋‹จํ•œ ๊ธฐ๋ณธ ์ •๋ณด๋งŒ์œผ๋กœ Spring boot ํ”„๋กœ์ ํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ๋„๋ก Spring ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

Project SDK์—์„œ ์—ฌ๋Ÿฌ๋ถ„์ด ์›ํ•˜๋Š” Java ๋ฒ„์ „์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” Java 8 ๋ฒ„์ „์„ ์ด์šฉํ•ด์„œ ์‹œ์ž‘ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

Next ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š” Java ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„๊ณผ๋Š” ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๋Š๋‚Œ์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ ํ•˜๋‚˜์”ฉ ์„ค๋ช…์„ ๋“œ๋ฆฌ์ž๋ฉด..

  • GroupID: ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์‚ฌ์ด์—์„œ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•ด์ฃผ๋Š” ID
  • ArtifactID: ํ˜„์žฌ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์œผ๋กœ ์ฐจํ›„ ๋ฐฐํฌํ•  ๋–„ JAR ํŒŒ์ผ์— ๋ถ™์—ฌ์ง€๋Š” ํŒŒ์ผ ์ด๋ฆ„

์ง€๊ธˆ์€ ์ž‘์€ ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด, ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ทธ๋ฃนํ•‘์ด ํ•„์š”ํ• ํ…๋ฐ, ๊ทธ ๊ทธ๋ฃน์˜ ID๋ฅผ GroupID๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋˜๊ณ , ๊ฐ๊ฐ์˜ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ArtifactID์— ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ, ์˜์กด์„ฑ ๊ด€๋ฆฌ ํˆด์„ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ ๊ด€๋ฆฌ ํˆด์€ Maven, Gradle ๋‘ ๊ฐ€์ง€๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” Groovy ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Gradle์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค.

Langauge๋Š” Kotlin ์–ธ์–ด๋กœ ์ง„ํ–‰ํ•˜๊ณ , Packaging์€ Jar ํŒŒ์ผ๋กœ ๋งž์ถฐ ์ฃผ์„ธ์š”. ๋ฒ„์ „๊ณผ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์€ ์œ„์—์„œ ์„ค์ •ํ•œ๋Œ€๋กœ ๊ทธ๋Œ€๋กœ ์ด์–ด๊ฐ€๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Next ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋‹ค์Œ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด, ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•  ๋””ํŽœ๋˜์‹œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชฉ๋ก์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋‚˜์™€ ์žˆ๋Š” ๋ชฉ๋ก๋“ค์€ ๋Œ€๋ถ€๋ถ„ Spring ๊ฐœ๋ฐœํŒ€์—์„œ ์ง„ํ–‰ํ•˜๋Š” ๋””ํŽœ๋˜์‹œ๋ฅผ ํฌํ•จํ•˜์—ฌ GCP, AWS ๋“ฑ์˜ ํด๋ผ์šฐ๋“œ ํˆด, Java์—์„œ Getter Setter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์œ ๋ช…ํ•œ Lombok ๋“ฑ ๋‹ค์–‘ํ•œ ๋””ํŽœ๋˜์‹œ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๊ทธ ์ค‘ REST API๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๋Œ€ํ‘œ์ ์œผ๋กœ Web ๋ถ€๋ถ„์—์„œ Spring Web์— ์ฒดํฌ๋ฅผ ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. Spring Web์€ Spring boot์—์„œ REST API๋ฅผ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋””ํŽœ๋˜์‹œ๋กœ GetMapping, PostMapping ๋“ฑ REST API์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‰ฝ๊ฒŒ REST API๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ €์žฅํ•  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด Spring boot ํ”„๋กœ์ ํŠธ๊ฐ€ ๋š๋”ฑ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŠธ๋กœ ์ด์–ด ๋‚˜๊ฐ€์„œ, ๊ฐ„๋‹จํ•œ REST API๋ฅผ ๋งŒ๋“œ๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments