WEB/Server

[์Šคํ”„๋ง๋ถ€ํŠธ ์ž…๋ฌธ] 1. ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •

kite707 2024. 4. 25.

์Šคํ”„๋ง๋ถ€ํŠธ์—๋Š” Maven๊ณผ Gradle์ด ์žˆ๋‹ค. ๋‘˜ ๋‹ค ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋•ก๊ฒจ์˜ค๊ณ  ๋นŒ๋“œ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์š”์ฆ˜์€ Gradle์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์Šคํ”„๋ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด๋„ Gradle๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.

 

์ด ๊ธ€์—์„œ๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค.

โญ ํ™˜๊ฒฝ
macOS, IntelliJ Untimate ๋ฒ„์ „์—์„œ ์ง„ํ–‰

 

1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

์ธํ…”๋ฆฌ์ œ์ด๋ฅผ ์—ด๊ณ  New Project๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. ์ดํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•œ๋‹ค.

Language, Type, JDK, Java, Packaging๋ถ€๋ถ„์„ ์ž˜ ๋งž์ถฐ์ค˜์•ผ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด spring web๊ณผ Thymeleaf๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋„๋ก ํ•˜์ž.

์ฐธ๊ณ ๋กœ spring boot ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๋‚ด๋ถ€์— ํ†ฐ์บฃ์ด๋ผ๋Š” ์›น์„œ๋ฒ„๊ฐ€ ๋‚ด์žฅ๋˜์–ด์žˆ๋‹ค. ๊ทธ ์„œ๋ฒ„๋ฅผ ๊ฐ™์ด ๋„์šฐ๋ฉด์„œ ์‹คํ–‰์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์‹คํ–‰ํ–ˆ์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต์ด๋‹ค. ์•„์ง ์•„๋ฌด๋Ÿฐ ์ฝ”๋“œ๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š” ๊ฒƒ์ด๋‹ค.

์ถ”๊ฐ€ ํŒ

setting(cmd+,)์—์„œ gradle์„ ๊ฒ€์ƒ‰ํ•œ ๋’ค build and run๊ณผ run test using์„ Intellij๋กœ ๋ฐ”๊พธ๋Š”๊ฒŒ ์ข‹๋‹ค. gradle์„ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋ฉด ๋Š๋ฆด ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ ์ด ์„ค์ •์„ ํ•˜๋ฉด ๋ฐ”๋กœ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์ž๋ฐ”๋ฅผ ๋„์›Œ์„œ ๋Œ๋ฆฐ๋‹ค.

์ขŒ์ธก ํ•˜๋‹จ ๋ฒ„ํŠผ(cmd๋‘๋ฒˆ)์„ ๋ˆ„๋ฅด๋ฉด ์šฐ์ธก ์ƒ๋‹จ Notification Database Gradle๋“ฑ์˜ ๋ฉ”๋‰ด๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค ์‚ฌ๋ผ์กŒ๋‹ค ํ•œ๋‹ค. ํ™”๋ฉด์„ ๋” ํฌ๊ฒŒ ๋ณด๊ธฐ ์œ„ํ•œ ์˜ต์…˜์ด๋‹ค.

2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์ด์ œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์šฐ์ธก ์ƒ๋‹จ gradle๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์•„๋ž˜ ์‚ฌ์ง„์—์„œ๋Š” logging์— slf4j์™€ logback์ด ์žˆ๋‹ค. slf4j๋Š” ์ธํ„ฐํŽ˜์ด์Šค, ์‹ค์ œ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ logback์ด๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋‘๊ฐ€์ง€ ์กฐํ•ฉ์„ ๋งŽ์ด ์“ฐ๋‹ˆ๊นŒ ์Šคํ”„๋ง ์ง„์˜์—์„œ๋„ ์ด๊ฒƒ์„ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์Šคํ”„๋ง๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ๋‹ค.

๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ ์šฉํ•œ Spring Boot Starter Web์—๋Š” Tomcat ์›น์„œ๋ฒ„์™€ Spring Web MVC๊ฐ€ ๋“ค์–ด์žˆ๋‹ค๋Š” ์ . Thymeleaf๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„, Spring Boot Starter๋ฅผ ํ†ตํ•ด ์Šคํ”„๋ง๋ถ€ํŠธ์™€ ์Šคํ”„๋ง ์ฝ”์–ด, ๋˜ ์•ž์„œ ์‚ดํŽด๋ณธ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์ ์šฉ๋œ๋‹ค. ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” junit์ด ๊ธฐ๋ณธ์ธ๋ฐ ์š”์ฆ˜์€ junit5๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

3. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ

ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋‹ค. iterm์—์„œ ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™ํ•œ ๋’ค ./gradlew build๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. java -jar~๋ช…๋ น์–ด๋ฅผ ์น˜๊ธฐ ์ „์— ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์‹คํ–‰์ค‘์ธ ์„œ๋ฒ„๋ฅผ ๊บผ์ค˜์•ผํ•œ๋‹ค. ๊ทธ๋ ‡์ง€์•Š์œผ๋ฉด ์ด๋ฏธ 8080ํฌํŠธ๋ฅผ ์“ฐ๊ณ  ์žˆ์œผ๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

cd dev/hello
./gradlew build //build ํด๋”๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

cd build/libs
java -jar hello-0.0.1-SNAPSHOT.jar

์ด์ „์—๋Š” ์„œ๋ฒ„์— ๋ฐฐํฌํ•  ๋•Œ ์„œ๋ฒ„์— tomcat์„ ๊น”๊ณ  ์ด๋Ÿฐ ์ €๋Ÿฐ ์ž‘์—…๋“ค์„ ํ•ด์ค˜์•ผํ–ˆ๋‹ค๋˜๋ฐ ์ง€๊ธˆ์€ jarํŒŒ์ผ๋งŒ ์ง‘์–ด๋„ฃ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์„ฑ๊ณต์ ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋‹ค. ๋งŒ์•ฝ ์ž˜ ๋˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ ./gradlew clean build์„ ํ†ตํ•ด buildํด๋”๋ฅผ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค.

๋Œ“๊ธ€