2023. 4. 24. 08:57ใ์ธํ๋ฐ/์คํ๋ง ๋ถํธ - ํต์ฌ ์๋ฆฌ์ ํ์ฉ
์์ฆ์ ์คํ๋ง์ ์ฌ์ฉํ๋คํ๋ฉด ์คํ๋ง ๋ถํธ๋ ๊ฑฐ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ค ๋ณด๋๊น.. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ด ๊ฑฐ์๋์ง๋ ๋ชฐ๋๋๋ฐ
์ฌ์ค ์คํ๋ง ๋ถํธ๊ฐ ์์ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ ๋ค.
ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ํ๋ค๊ณ ํ๋ฉด ์ด์ ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ง ํ๋ํ๋ ๊ณ ๋ฏผํ๊ณ ์ ํํด์ผ ํ๋๋ฐ ์ฌ๊ธฐ์ ์ด์ ๋ํด์ ์ด ๊ฐ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ๊น์ง ๊ณ ๋ฏผํด์ผ ํ๋ค.
๊ทผ๋ฐ ์ฌ๊ธฐ์ ๊ฐ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๋ง ๊ณ ๋ฏผํ๋๊ฒ ์๋๋ผ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ผ๋ฆฌ ํธํ์ด ์ ๋๋ ๋ฒ์ ์ด ์๊ณ ์๋๋ ๋ฒ์ ์ด ์์ด์ ์ด๊ฒ๊น์ง ๊ณ ๋ฏผํด์ผ ํ๋ค... ๊ทธ๋๊น ํ๋ก์ ํธ ์ค์ ํ๋๋ฐ์ ๊ฝค๋ ๋ง์ ์๊ฐ์ด ๋ค์ด๊ฐ๋ค.. .
์ด๋ฌํ ๋ฌธ์ ๋ค์ ์คํ๋ง ๋ถํธ๊ฐ ํด๊ฒฐํด์ฃผ๋๋ฐ ์คํ๋ง ๋ถํธ๋ ๊ฐ๋ฐ์๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๊ด๋ฆฌ
์คํ๋ง ๋ถํธ ์คํํฐ
๋ฅผ ์ ๊ณตํ๋ค.
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)
์์ 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'
์ด๋ฐ ํ์์ ์ฌ์ฉํด์ ํธ๋ฆฌํ๊ฒ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ๋ง๋ ๋ณ๊ฒฝ๊ฐ๋ฅํ๋ค.
'์ธํ๋ฐ > ์คํ๋ง ๋ถํธ - ํต์ฌ ์๋ฆฌ์ ํ์ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง @Conditional (0) | 2023.04.27 |
---|---|
์คํ๋ง ๋ถํธ Auto Configuration (0) | 2023.04.25 |
์คํ๋ง ๋ถํธ์ ์น ์๋ฒ ์คํ ๋ฐ ๋น๋ ๋ฐฐํฌ (0) | 2023.04.21 |
์คํ๋ง ๋ถํธ 3.xx ๋น๋ ์ค๋ฅ (Could not resolve org.springframework.boot:spring-boot-dependencies:3.0.5.) (0) | 2023.04.20 |
๋ถํธ ํด๋์ค ๋ง๋๋ ๋ฒ (0) | 2023.04.18 |