01. ํ๋ก์ ํธ ์์ฑ
→ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด spring initializr๋ก ์ด๋ํ๋ค. https://start.spring.io

์ธํ ๋ฆฌ์ ์ด์์๋ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์ง๋ง, ๊ทธ๋ณด๋ค ๋ ํธํ๊ฒ ์น์์ ์์ฑํ ์ ์๋ spring initializr๋ผ๋ ๊ฒ์ ํตํด์ ํ๋ก์ ํธ๋ฅผ ์๋ก ์์ฑํ๋ค. ์๋์ ๊ฐ์ด ์ค์ ์ ํด์ค๋ค.

• ๊ด๋ฆฌ ํด : Gradle - Groovy (Gradle : ๋น๋ ๋๊ตฌ)
• ์ธ์ด : Java
• ์คํ๋ง ๋ถํธ ๋ฒ์ : 3.1.0 (์ต์ ๋ฒ์ ) (SNAPSHOT์ ๊ฐ๋ฐํ๊ณ ์๋ ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ ์ ํX)
• ํ๋ก์ ํธ ์ด๋ฆ : Traveling.Webproject
• ์๋ฐ ๋ฒ์ : 17 (์คํ๋ง ๋ถํธ ๋ฒ์ 3.0.X ์ด์์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์๋ฐ 17์ ์ ํํด์ผ ํ๋ค.)
• Dependency(์์กด์ฑ ๋๊ตฌ) ์ถ๊ฐ
- Spring Web : ํฐ์บฃ์ ๊ธฐ๋ณธ์ผ๋ก ํ์ฌํ๊ณ , ์น ๊ฐ๋ฐ์ ํ์ํ ์์กด์ฑ
- Spring Data JPA : ๊ธฐ๋ณธ์ ์ธ CRUD ๋ฉ์๋ ์ ๊ณต
- MySQL Driver : MySQL๊ณผ ์ฐ๋ํ๊ธฐ ์ํ ๋๋ผ์ด๋ฒ(MariaDB๋ก ํ ์ MariaDB Driver ์์กด์ฑ ์ถ๊ฐ)
- Thymeleaf : ์๋ฒ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๋ง๋ค์ด์ฃผ๋ ์ญํ
- Lombok : ๋ฐ๋ณต๋๋ ๋ฉ์๋ ์์ฑ ์ฝ๋๋ฅผ ์ค์ฌ์ฃผ๋ ์ฝ๋ ๋ค์ด์ดํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ

GENERATE๋ฅผ ๋๋ฌ์ฃผ๋ฉด board๋ผ๋ zip ํ์ผ์ด ํ์ฑ๋๋ค. ์์ถ์ ํ์ด์ฃผ๊ณ ์ธํ ๋ฆฌ์ ์ด์์ ํ์ผ์ ์ฐ๋ค.
โป ์ค๊ฐ์ DB๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋์ MariaDB๋ก ์ ํ๊ณ MySQL๊ณผ ์ฐ๋ํ๋ ๊ฑธ๋ก ํ๋ค. MariaDB๋ก ํ๋๊น ์ถฉ๋๋ ์๊ธฐ๊ณ ํฌํธ ๋ฌธ์ ๋ฑ ์ฌ๋ฌ ์๋ฌ๊ฐ ๋ด๋๋ฐ ํด๊ฒฐ ๋ถ๊ฐ๋ผ์ ๊ธฐ์กด์ ์๋ MySQL๊ณผ ํ๋ ๊ฑธ๋ก ์ ํ๋ค.
02. ์ธํ ๋ฆฌ์ ์ด์์ ํ์ผ ์ด๊ธฐ

์ธํ ๋ฆฌ์ ์ด๋ฅผ ์คํํ์ฌ open์ ํด๋ฆญํ๊ณ ์์ถ์ ํ์ด์ค ํ์ผ์ ์ฐพ์์ ํด๋ฆญํ๋ค.
(์ธํ ๋ฆฌ์ ์ด๋ฅผ ์คํํ์ง ์๊ณ ํ์ผ์ ๋ฐ๋ก ์ฌ๋ ๋ฐฉ๋ฒ๋ ์๋ค. ํ์ผ ๋ด์ build.gradle์ด๋ผ๋ ๊ฑธ ํด๋ฆญํ๋ฉด ์์์ ์คํํ๋ค.)
์คํํด๋ณด๊ธฐ
์ ์์ ์ผ๋ก ๋น๋๊ฐ ๋๋์ง board > main > java > com.study.board > BoardApplication์์ ์คํ์ ํด๋ณธ๋ค.

์ค๋ฅ

ํด๊ฒฐ ๋ฐฉ๋ฒ

์์ฑ์์ Gradle์ ๊ฒ์ or Build > Build Tools > Gradle์ ๋ค์ด๊ฐ์ ์์ ๊ฐ์ด ์ค์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ์คํ.
DB์ค๋ฅ๋ฅผ ์ ์ธํ๊ณ , ์ ์ ์๋ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.

jpa๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด db์ ์ฐ๊ฒฐ์ด ๋์ด ์์ด์ผ ํ๋ค.
03. MySQL Workbench์์ ์คํค๋ง ์์ฑ


ํด๋น ์์ด์ฝ์ ํด๋ฆญํ๊ณ board๋ผ๋ ์คํค๋ง๋ฅผ ์์ฑํ๋ค.

๊ทธ๋ฌ๋ฉด board๋ผ๋ ์คํค๋ง๊ฐ ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
(sakila, sys, world๋ผ๋ ํ ์ด๋ธ์ด ์๋๋ฐ ์ญ์ ํด๋ ๋๋ค. ์ค๋ฅธ์ชฝ ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ๊ณ drop schema ํด์ฃผ๋ฉด ๋๋ค.)
04. ํ๋กํผํฐ ์ถ๊ฐ

board > src > main > resources > application.properties์์ ์๋์ ๊ฐ์ด ์ถ๊ฐํด์ค๋ค.
server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/board?serverTimezone=UTC&characterEncoding=UTF-8
MariaDB์ผ ๊ฒฝ์ฐ
server.port=8080
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/board
05. ์คํํ๊ธฐ
chrome์ฐฝ์์ localhost:8080 ์ ๋ ฅํด์ฃผ๋ฉด ์๋์ ๊ฐ์ ํ์ด์ง๊ฐ ๋ฌ๋ค. ๊ทธ๋ผ ์ฑ๊ณตํ ๊ฒ์ด๋ค.

์ธํ ๋ฆฌ์ ์ด ์๋จ์ ์ด๋ก์ run ์์ด์ฝ์ ๋๋ฌ์ผ ์คํ์ด ๋๋ค.
06. ์ปจํธ๋กค๋ฌ ์์ฑ

board > src > main > java > com.study.board ์ controller ํจํค์ง๋ฅผ ์์ฑํ๋ค. (ํจํค์ง๋ช : controller)
ํจํค์ง ๋ด์ ํด๋์ค๋ฅผ ์์ฑํ๋ค. ์ ํ ์๋ ํจํค์ง๋ช ๋ค์ ์ ์ด์ผ ํ๋ค. (ํด๋์ค๋ช : BoardController)
๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด ํด๋์ค ์์ @Controller๋ฅผ ์ ์ด์ฃผ๋ฉด ์๋์ผ๋ก import ํ๋ค.
package com.study.board.controller;
import org.springframework.stereotype.Controller;
@Controller
public class BoardController {
}
@Controller ์ด๋ ธํ ์ด์ ์ ๋ถ์ฌํ๋ค๊ณ ํ๋๋ฐ, ์ด๋ ์คํ๋ง์ด ์ปจํธ๋กค๋ฌ์ธ ๊ฑธ ์ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค.
package com.study.board.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class BoardController {
@GetMapping("/")
@ResponseBody
public String main() {
return "Hello World"
}
}
@GetMapping - ์ฃผ์๋ก ๋ค์ด๊ฐ์ ๋ /๋ฅผ ์๋์ผ๋ก ๋ถ์ฌ์ค๋ค.
@ResponseBody - main์ ์ ์๋ Hello World๋ฅผ ๋์์ฃผ๋ ์ญํ ์ ํ๋ค.
๋ค์ ์คํ

localhost:8080์ผ๋ก ๋ค์ด๊ฐ๋ฉด Hello World๊ฐ ์ฐํ ํ์ด์ง๊ฐ ๋ณด์ผ ๊ฒ์ด๋ค. ์ด๋ฌ๋ฉด ์ฑ๊ณตํ ๊ฒ์ด๋ค.
'๐ป PROJECT > [์คํ๋ง ๋ถํธ] ๊ฒ์ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์คํ๋ง ๋ถํธ] 6. ๊ฒ์ํ ๋ง๋ค๊ธฐ ์ญ์ ์ฒ๋ฆฌ (0) | 2023.10.25 |
|---|---|
| [์คํ๋ง ๋ถํธ] 5. ๊ฒ์ํ ๋ง๋ค๊ธฐ ๊ฒ์๋ฌผ ๋ฆฌ์คํ (0) | 2023.10.24 |
| [์คํ๋ง ๋ถํธ] 4. ๊ฒ์ํ ๋ง๋ค๊ธฐ ๊ฒ์๊ธ ์์ฑํผ ์์ฑ๊ณผ ์ฒ๋ฆฌ (1) | 2023.10.23 |
| [์คํ๋ง ๋ถํธ] 3. ๊ฒ์ํ ๋ง๋ค๊ธฐ ํ ์ด๋ธ ์์ฑ (0) | 2023.10.22 |
| [์คํ๋ง ๋ถํธ] ๊ฒ์ํ ๋ง๋ค๊ธฐ ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ (0) | 2023.10.22 |