Step 1. 학습용 DB와 계정 만들기
MySQL에 접속한다.
mysql -u root
학습용 데이터베이스를 하나 만들고
CREATE DATABASE spring_study
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
학습용 사용자도 하나 만든다.
CREATE USER 'spring'@'localhost'
IDENTIFIED BY 'spring1234';
그리고 권한을 준 다음
GRANT ALL PRIVILEGES
ON spring_study.*
TO 'spring'@'localhost';
spring 사용자에게 spring_study 데이터베이스 내 모든 테이블에 대한 전체 권한을 부여하는 명령
적용한다.
FLUSH PRIVILEGES;
다음 명령어를 실행했을 때
SHOW DATABASES;
spring_study가 보이면 성공이다.
이제 root 계정을 종료한 다음
exit;
그리고 학습용 새 계정으로 접속해보자.
mysql -u spring -p
비밀번호:
spring1234
다음 명령어를 입력했을 때
USE spring_study;
SELECT DATABASE();
spring_study가 출력되면 학습을 위한 MySQL 준비가 된 것이다.
Step 2. Spring Boot 프로젝트 만들기
VS Code에서 명령 팔레트(Cmd + Shift + P)를 열고
Spring Initializr: Create a Gradle Project...
를 누르고
다음과 같이 선택한다.
Spring Boot: 4.1.1
Language: Java
Group: com.example
Artifact: todolist
Package Name: com.example.todolist
Packaging: Jar
Java: 21
Dependency는 다음 네 개를 선택한다.
Spring Web
Spring Data JPA
MySQL Driver
Validation
Step 3. 프로젝트 구조 이해하기
생성된 프로젝트를 열면 대략 다음 구조가 보인다.
todolist
├── build.gradle
├── settings.gradle
├── gradlew
├── gradlew.bat
└── src
├── main
│ ├── java
│ │ └── com.example.todolist
│ │ └── TodolistApplication.java
│ │
│ └── resources
│ └── application.properties
│
└── test
지금은 딱 네 가지만 기억하도록 하자.
build.gradle
프로젝트에서 사용하는 라이브러리를 관리한다.
Node.js에서의 package.json과 비슷한 역할이라고 생각해도 좋다.
gradlew
Gradle Wrapper로 앞으로 프로젝트를 실행할 때
./gradlew
를 사용한다.
src/main/java
Java 코드를 작성하는 곳이다.
src/main/resources
설정 파일을 관리하는 곳이다.
대표적으로
application.properties
가 있다.
Step 4. DB 연결
먼저 Spring Boot에게 "어느 DB 서버로 접속해야 하는지"를 알려주기 위해 DB 연결을 설정한다.
src/main/resources/application.properties
spring.application.name=todolist
# MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/spring_study
spring.datasource.username=spring
spring.datasource.password=spring1234
# JPA
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
앞에서 만든 DB와 계정을 기준으로 하면
Database : spring_study
Username : spring
Password : spring1234
Port : 3306
이다.
Step 5. 첫 API 만들어보기
src/main/java/com/example/todolist/HelloController.java
package com.example.todolist;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}
MySQL 서버가 꺼져있다면 다음 명령어를 통해 실행한다.
brew services start mysql
이제 프로젝트 루트에서 다음 명령어를 실행하여 서버를 실행한다.
./gradlew bootRun
터미널 로그에 다음과 같이 출력되면
Tomcat started on port 8080
성공이다.
여기서 80% EXECUTING와 같이 나타나는 것은
./gradlew bootRun이 서버 프로세스를 계속 실행하고 있기 때문에 Gradle 작업이 끝나지 않은 상태라는 뜻으로 현재 상황에서는 정상이다.
이제 브라우저에서
http://localhost:8080/hello
로 접속한다.
화면에
Hello Spring Boot!
가 나오면 성공적으로 첫 Spring Boot API를 만든 것이다.
여기서 반드시 이해해야 할 3가지
@RestController
@RestController
public class HelloController {
...
}
Spring에게 말하는 것이다.
"이 클래스가 HTTP 요청을 처리할 Controller야."
@GetMapping
@GetMapping("/hello")
의 뜻은
GET /hello
요청이 들어오면 이 메서드를 실행하라는 것이다.
따라서
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
의 흐름은
브라우저
↓
GET /hello
↓
Spring Boot
↓
HelloController
↓
hello()
↓
"Hello Spring Boot!"
↓
브라우저
이다.
TodolistApplication
프로젝트를 생성하고 생긴 src/main/java/com/example/todolist/TodolistApplication.java 파일의 이 클래스도 중요하다.
@SpringBootApplication
public class TodolistApplication {
public static void main(String[] args) {
SpringApplication.run(TodolistApplication.class, args);
}
}
여기가 프로그램의 시작점이다.
Java 프로그램의
public static void main(...)
에서 Spring Boot가 시작된다.
그리고
SpringApplication.run(...)
이 실행되면서 Spring이 필요한 객체들을 찾아서 생성하고 웹 서버도 시작한다.
Controller
Service
Repository
도 여기서부터 Spring이 관리하게 된다.
현재 단계에서의 전체 그림
Spring Boot
│
Client ─────→ Controller
Browser │
↓
Response
앞으로 이것을
Client
↓
Controller
↓
Service
↓
Repository
↓
MySQL
까지 확장할 것이다.
이 구조가 사실 Spring Boot 입문에서 가장 중요한 뼈대이다.
'개발 > Spring Boot' 카테고리의 다른 글
| [Spring Boot] JWT(JSON Web Token) (0) | 2026.10.08 |
|---|---|
| [Spring Boot] Spring Security (0) | 2026.10.06 |
| [Spring Boot] CRUD + DTO + Validation + 예외 처리 (0) | 2026.10.06 |
| [Spring Boot] Service + DI + JPA + MySQL (0) | 2026.10.03 |
| VSCode에서 Spring Boot 실습하기 (REST API) (0) | 2026.04.13 |