๐Ÿ“— [Spring Boot] ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ์„ค์ • ๊ด€๋ จ ์„ค๋ช…

์–‘์•„ยท2021๋…„ 12์›” 3์ผ
1

SPRING BOOT

๋ชฉ๋ก ๋ณด๊ธฐ
2/2
post-thumbnail

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ๋งŽ์€ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.
ํ˜ผ์ž ํž˜์œผ๋กœ ์ฒซ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ชจ๋ฅด๊ณ  ๋„˜์–ด๊ฐ”๋˜ ๋ถ€๋ถ„๋“ค์ด ๋งŽ์€ ํ„ฐ๋ผ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋‘๊ณ  ์‹ถ์–ด์„œ ์“ฐ๋Š” ๊ธ€์ด๋‹ค.๐Ÿ˜Ž


์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ์ธํ…”๋ฆฌ์ œ์ด ์•ˆ์—์„œ Spring Initializr๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜์ฒ˜๋Ÿผ IntelliJ IDEA Community ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ๋”ฐ๋กœ ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ํ•ด๋‹น ์‚ฌ์ดํŠธ์—์„œ ์ง์ ‘ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค. (๋ฒˆ๊ฑฐ๋กœ์›€๐Ÿ˜ข)

๐Ÿ“ท Spring Initializr ์ด๋ฏธ์ง€
๐ŸŒŸ ์ฃผ์†Œ: https://start.spring.io/


๐ŸŽฏ Maven or Gradle

๋นŒ๋“œ ํƒ€์ž…์„ ์„ค์ •ํ•˜๋Š” ๊ณณ์ด๋‹ค.

โœ” Maven
์ž๋ฐ” ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ๋ฅผ ์ž๋™ํ™”ํ•ด์ฃผ๋Š” ๋นŒ๋“œ ํˆด์ด๋‹ค. ์ฆ‰, ์ž๋ฐ” ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  packageํ•ด์„œ deploy ํ•˜๋Š” ์ผ์„ ์ž๋™ํ™” ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
๐ŸŽจ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํŠน์ • ๋ฌธ์„œ(pom.xml)์— ์ •์˜ํ•ด์ฃผ๋ฉด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฟ ์•„๋‹ˆ๋ผ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊นŒ์ง€ ํ•จ๊ป˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋‹ค์šด ๋ฐ›์•„์ค€๋‹ค.
๐ŸŽจ ์ค‘์•™ ์ €์žฅ์†Œ๋ฅผ ํ†ตํ•˜์—ฌ ์ž๋™์œผ๋กœ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค. ์ค‘์•™ ์ €์žฅ์†Œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋Š” ํŒŒ์ผ ์„œ๋ฒ„์ด๊ณ  ์ €์žฅ์†Œ๋Š” ์žฌ๋‹จ์—์„œ ์šด์˜ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์„ค ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ” Gradle
Ant์ฒ˜๋Ÿผ ๋งค์šฐ ์œ ์—ฐํ•œ ๋ฒ”์šฉ ๋นŒ๋“œ ๋„๊ตฌ์ด๋ฉด์„œ Maven์ฒ˜๋Ÿผ ๊ตฌ์กฐํ™” ๋œ ๊ทธ๋ฃจ๋น„(Groovy)๋ฅผ ๊ธฐ๋ฐ˜์˜ DSL(Domain Specific Language)์„ ์‚ฌ์šฉํ•œ ๋นŒ๋“œ ํˆด์ด๋‹ค.

๐Ÿ‘‰ ๊ทธ๋ฃจ๋น„(Groovy)๋ž€?
XML์–ธ์–ด๊ฐ€ ์•„๋‹Œ JVM์—์„œ ๋™์ž‘ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋‹ค.

๐ŸŽจ Ant, Maven์ฒ˜๋Ÿผ ๊ธฐ์กด์˜ ๋นŒ๋“œ ํˆด์€ xmlํ˜•์‹์„ ์ด์šฉํ•˜์—ฌ ์ •์ ์ธ ์„ค์ • ์ •๋ณด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ Groovy๋ผ๋Š” ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋กœ ์„ค์ •์ •๋ณด๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ตฌ์กฐ์ ์ธ ์žฅ์ ์ด ์žˆ๋‹ค.
๐ŸŽจ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •์ฃผ์ž…๋ฐฉ์‹์œผ๋กœ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Maven์˜ ์ƒ์† ๊ตฌ์กฐ๋ณด๋‹ค ์žฌ์‚ฌ์šฉ์— ์šฉ์ดํ•˜๋‹ค.

๐ŸŽฏ Language

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๋Š” ๊ณณ์ด๋‹ค.

๐ŸŽฏ Spring Boot Version

์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฒ„์ „์„ ์„ ํƒํ•˜๋Š” ๊ณณ์œผ๋กœ SNAPSHOT์ด ๋ถ™์€ ๊ฒƒ์€ ํ˜„์žฌ ๊ฐœ๋ฐœ์ค‘์ธ ๋ฒ„์ „, M(Minor)์ด ๋ถ™์€ ๊ฒƒ์€ ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ ๋˜์ง€ ์•Š์€ ๋ฒ„์ „์ด๋ฏ€๋กœ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ ๋œ ๋ฒ„์ „ ์ค‘ ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.๐Ÿ˜Ž

๐Ÿ“Œ ๋งŒ์•ฝ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ฒ„์ „ ์™ธ์— ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,
ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ ํ›„ ์ง์ ‘ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๐ŸŽฏ Jar or War

ํ•ด๋‹น ํŒŒ์ผ ํ˜•ํƒœ๋กœ ํŒจํ‚ค์ง•์„ ํ•˜์—ฌ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ๊ธฐ๋™ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Jar ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง• ํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋ฐ”๋ผ๋Š” ๋ช…๋ น์–ด๋กœ $java -jar [์ƒ์„ฑํ•œ ํŒจํ‚ค์ง€๋ช…]์„ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์Šคํ”„๋ง๋ถ€ํŠธ ์•ˆ์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” ํ†ฐ์บฃ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜๋ฉด์„œ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ๊ธฐ๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

War ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง• ํ•˜๊ฒŒ ๋˜๋ฉด Servlet, JSP๊ฐ™์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ–ˆ๋˜ web.xml ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ์›น ํ˜•ํƒœ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์ด ์ƒํƒœ๋Š” ๋‚ด์žฅ ํ†ฐ์บฃ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์— ์žˆ๋Š” ํ†ฐ์บฃ์ด๋‚˜ ์™ธ๋ถ€์— ์žˆ๋Š” JBoss ๋“ฑ ๋‹ค๋ฅธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์— ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ํ˜•ํƒœ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๐ŸŽฏ Dependency

dependency๋ฅผ ์šฐ๋ฆฌ๋‚˜๋ผ ๋ง๋กœ ํ•ด์„ํ•˜๋ฉด ์˜์กด์ด๋ผ๋Š” ๋œป์ด๋‹ค.
์ฆ‰, ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ Maven์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” pom.xml์— dependency๋กœ ์ •์˜ํ•ด์ฃผ๊ณ , Gradle์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” build.gradle๋กœ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿงฉ Maven(pom.xml) โ†’ lombok ์ฃผ์ž… ์˜ˆ์‹œ

//lombok
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

๐Ÿงฉ Gradle(build.gradle) โ†’ lombok ์ฃผ์ž… ์˜ˆ์‹œ

//lombok
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.12'

๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์ด์ง€๋งŒ ์•Œ์•„๋‘๋ฉด ์ข‹์œผ๋‹ˆ ์•Œ์•„๋‘์ž! ๐Ÿ™Œ

profile
Back-end developer

0๊ฐœ์˜ ๋Œ“๊ธ€