์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ์™€ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ

2023. 4. 24. 08:57ใ†์ธํ”„๋Ÿฐ/์Šคํ”„๋ง ๋ถ€ํŠธ - ํ•ต์‹ฌ ์›๋ฆฌ์™€ ํ™œ์šฉ

728x90

 

 

์š”์ฆ˜์€ ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•œ๋‹คํ•˜๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ฑฐ์˜ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ๊นŒ.. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šด ๊ฑฐ์˜€๋Š”์ง€๋„ ๋ชฐ๋ž๋Š”๋ฐ 

์‚ฌ์‹ค ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์—†์„ ๋•Œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์› ๋‹ค. 

ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ์ด์ œ ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ง€ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ณ ๋ฏผํ•˜๊ณ  ์„ ํƒํ•ด์•ผ ํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์— ์ด์ œ ๋”ํ•ด์„œ ์ด ๊ฐ๊ฐ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „๊นŒ์ง€ ๊ณ ๋ฏผํ•ด์•ผ ํ–ˆ๋‹ค. 

 

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ๊ฐ๊ฐ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „๋งŒ ๊ณ ๋ฏผํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋ผ๋ฆฌ ํ˜ธํ™˜์ด ์ž˜ ๋˜๋Š” ๋ฒ„์ „์ด ์žˆ๊ณ  ์•ˆ๋˜๋Š” ๋ฒ„์ „์ด ์žˆ์–ด์„œ ์ด๊ฒƒ๊นŒ์ง€ ๊ณ ๋ฏผํ•ด์•ผ ํ•œ๋‹ค... ๊ทธ๋‹ˆ๊นŒ ํ”„๋กœ์ ํŠธ ์„ค์ •ํ•˜๋Š”๋ฐ์— ๊ฝค๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์ด ๋“ค์–ด๊ฐ„๋‹ค.. .

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ํ•ด๊ฒฐํ•ด์ฃผ๋Š”๋ฐ ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก 

์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ 

์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ 

๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 

 

 

 

0๏ธโƒฃ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ  (๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์„ค์ •)

ํ•ญ์ƒ ๊น€์˜ํ•œ ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐ•์˜ ์Šคํƒ€์ผ์€ ๋ฐ”๋กœ ํŽธ๋ฆฌํ•œ ? ์ตœ์‹ ? ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด ๊ธฐ๋Šฅ์ด ๋“ค์–ด์˜ค๊ฒŒ ๋œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ทธ ์ „์— ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ณ ~ ๊ทธ ๋‹ค์Œ ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์ด ์ƒ๊ฒผ๋‹ค~ ์ด๋Ÿฐ ์Šคํƒ€์ผ๋กœ ๊ฐ•์˜๋ฅผ ํ•œ๋‹ค. 

 

 

build.gradle

//1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง์ ‘ ์ง€์ •
//์Šคํ”„๋ง ์›น MVC
implementation 'org.springframework:spring-webmvc:6.0.4'
//๋‚ด์žฅ ํ†ฐ์บฃ
implementation 'org.apache.tomcat.embed:tomcat-embed-core:10.1.5'
//JSON ์ฒ˜๋ฆฌ
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.1'
//์Šคํ”„๋ง ๋ถ€ํŠธ ๊ด€๋ จ
implementation 'org.springframework.boot:spring-boot:3.0.2'
implementation 'org.springframework.boot:spring-boot-autoconfigure:3.0.2'
//LOG ๊ด€๋ จ
implementation 'ch.qos.logback:logback-classic:1.4.5'
implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.19.0'
implementation 'org.slf4j:jul-to-slf4j:2.0.6'
//YML ๊ด€๋ จ
implementation 'org.yaml:snakeyaml:1.33'

์Šคํ”„๋ง์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 

์Šคํ”„๋ง ๋ถ€ํŠธ ์ด์ „์—๋Š” ์ด๋Ÿฐ๊ฒƒ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ๋ฒ„์ „๊นŒ์ง€ ์ฐพ์•„์„œ ์ง€์ •ํ•ด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค. 

 

 

 

-> ์ด๋ ‡๊ฒŒ ์ง์ ‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์šฐ์„  ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์œ„์˜ ์„ ํƒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ์ˆ˜ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์•Œ์•„์•ผ ํ•˜๊ณ , ๋”ํ•ด์„œ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ๊ฐ๊ฐ์˜ ๋ฒ„์ „๊นŒ์ง€ ๊ณ ๋ คํ•ด์„œ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค. 

๋‹จ์ˆœํžˆ ๋ฒ„์ „๋งŒ ์„ ํƒํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๊ธฐ์— ๋”ํ•ด์„œ ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ๊ฐ„์— ์„œ๋กœ ํ˜ธํ™˜์ด ๋˜๋Š” ๋ฒ„์ „๋„ ์žˆ์ง€๋งŒ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „๋„ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค... 

(๊ทธ๋ƒฅ ๊ฐœ๋ฐœํ•˜๊ธฐ๋„ ํž˜๋“ ๋ฐ ๋ฒ„์ „๊นŒ์ง€ ๋‹ค ์•Œ๊ณ  ์„ ํƒํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋‹ค...) 

 

 

 

1๏ธโƒฃ ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ 

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๊ฐœ๋ฐœ์ž ๋Œ€์‹ ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์ค€๋‹ค. 

์œ„์—์„œ ๋ณด๋ฉด build.gradle์— ๊ฐ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งˆ๋‹ค ๋ฒ„์ „์„ ์ง€์ •ํ•ด์คฌ๋Š”๋ฐ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์„ ํƒํ•˜๋ฉด ๋˜๊ณ , ๋ฒ„์ „์€ ์ƒ๋žตํ•ด๋„ ๋œ๋‹ค! 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์ง€์ •ํ•ด์ฃผ๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ด ๋ถ€ํŠธ ๋ฒ„์ „์— ๋งž๋Š” ์ตœ์ ํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์„ ํƒํ•ด์ค€๋‹ค. 

 

โ— ๋Œ€์‹  ์ด ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” io.spring.dependency-management ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 

plugins {
    id 'org.springframework.boot' version '3.0.2'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}
//์Šคํ”„๋ง ์›น, MVC
implementation 'org.springframework:spring-webmvc'
//๋‚ด์žฅ ํ†ฐ์บฃ
implementation 'org.apache.tomcat.embed:tomcat-embed-core'
//JSON ์ฒ˜๋ฆฌ
implementation 'com.fasterxml.jackson.core:jackson-databind'
//์Šคํ”„๋ง ๋ถ€ํŠธ ๊ด€๋ จ
implementation 'org.springframework.boot:spring-boot'
implementation 'org.springframework.boot:spring-boot-autoconfigure'
//LOG ๊ด€๋ จ
implementation 'ch.qos.logback:logback-classic'
implementation 'org.apache.logging.log4j:log4j-to-slf4j'
implementation 'org.slf4j:jul-to-slf4j'
//YML ๊ด€๋ จ
implementation 'org.yaml:snakeyaml'

์ด์ œ io.spring.dependency-management ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด๋„ ๋œ๋‹ค. 

 

*  io.spring.dependency-management ํ”Œ๋Ÿฌ๊ทธ์ธ

: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด spring-boot-dependencies ์— ์žˆ๋Š” ๋‹ค์Œ bom ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค. 

(๊ทธ๋ฆฌ๊ณ  ์ด spring-boot-dependencies ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ gradle ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž์˜ ๋ˆˆ์— ์˜์กด๊ด€๊ณ„๋กœ ๋ณด์ด์ง€๋Š” ์•Š๋Š”๋‹ค. )

spring-boot/build.gradle at main · spring-projects/spring-boot (github.com)

 

GitHub - spring-projects/spring-boot: Spring Boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

์œ„์— build.gradle ๋ฌธ์„œ์•ˆ์— ๋ณด๋ฉด bom ์ด๋ผ๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์— ๋ณด๋ฉด ๊ฐ๊ฐ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๋ฒ„์ „์ด ๋ช…์‹œ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ด๋•Œ ๊ฐ๊ฐ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ๋ฒ„์ „์„ ์„ ํƒํ•  ๋•Œ๋Š” ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ ์ง€์ •ํ•˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฒ„์ „์„ ์ฐธ๊ณ ํ•œ๋‹ค. 

 

โ— ์ด๋•Œ ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๋•Œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์ง์ ‘ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

-> ์ด๋ ‡๊ฒŒ ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ๋Š” ์Šคํ”„๋ง ์ž์‹ ์„ ํฌํ•จํ•ด์„œ ์ˆ˜ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „์„ ์ตœ์ ํ™”ํ•ด์„œ ๊ด€๋ฆฌํ•ด์ค€๋‹ค. 

๊ทธ ์ „์—๋Š” ์ง์ ‘ ๋ฒ„์ „๋„ ์ง€์ •ํ•ด์ฃผ๊ณ  ํ•ด์•ผํ–ˆ๋Š”๋ฐ ์ด์ œ๋Š” ๊ฐœ๋ฐœ์ž๋Š” ๋‹จ์ˆœํžˆ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋ฒ„์ „๋งŒ ์ง€์ •ํ•ด์ฃผ๋ฉด ์•Œ์•„์„œ ์ง€์ •ํ•ด์ค€๋‹ค.!! 

 

 

 

2๏ธโƒฃ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ 

์œ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •ํ•œ ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์›น ํ”„๋กœ์ ํŠธ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 

์ฒ˜์Œ ์Šคํ”„๋ง์„ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ ์ž…์žฅ์—์„œ๋Š” ๋‹จ์ˆœํžˆ ํ•œ๋ฒˆ ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๊ณ  ์‹ถ์€๋ฐ๋„ ์ด ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์•Œ๊ณ  ์ž‘์„ฑํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ชจ์•„๋‘” ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค. 

 

//3. ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ
implementation 'org.springframework.boot:spring-boot-starter-web'

spring-boot-starter-web ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•˜๋‚˜๋งŒ ์ด์ œ ์ง€์ •ํ•ด์ฃผ๋ฉด ์œ„์—์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ์ง€์ •ํ•ด์คฌ๋˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋ชจ๋‘ ํฌํ•จ๋œ๋‹ค. 

์ฆ‰, ํ•„์š”ํ•œ ์˜์กด์„ฑ๋“ค์„ ๋ชจ๋‘ ๋ชจ์•„๋‘” ์„ธํŠธ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ง€๊ธˆ์€ ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ spring-boot-starter-web ์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

์ด๋ ‡๊ฒŒ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์— ๋งž๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š”๋ฐ ๋งŒ์•ฝ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด 

//์Šคํ”„๋ง ๋ถ€ํŠธ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๋ณ€๊ฒฝ
ext['tomcat.version']='10.1.4'

์ด๋Ÿฐ ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์„œ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „๋งŒ๋„ ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90