[Spring 입문 1일차] 개발 환경 세팅부터 첫 실행까지
들어가며
Java 기초 시리즈에서 변수, 클래스, 객체, 다형성까지 다뤘다. 그런데 문법을 어느 정도 익히고 나면 한 가지 의문이 남는다. "이걸로 대체 뭘 만들 수 있는가?"
그 답 중 하나가 Spring이다. 우리가 매일 사용하는 웹 서비스의 백엔드, 즉 화면 뒤에서 데이터를 주고받고 처리하는 서버의 상당수가 Java와 Spring으로 동작한다. 이번 시리즈는 한 달 동안 Spring을 단계별로 익히고, 마지막에는 간단한 게시판 프로젝트까지 직접 만들어보는 것을 목표로 한다.
Java 문법이 아직 익숙하지 않다면 [Java 기초 카테고리]를 먼저 보고 오는 것을 권한다. 이 시리즈는 Java를 어느 정도 안다는 전제로 진행한다.
1일차의 목표는 개발 환경을 세팅하고, 프로젝트를 만들어 첫 화면을 띄우는 것까지다.
Spring과 Spring Boot의 차이
처음 공부할 때 가장 헷갈리는 부분이다. 간단히 정리하면 다음과 같다.
- Spring (Framework) 은 Java로 서버를 만들 때 필요한 기능을 모아둔 거대한 도구 모음이다. 강력하지만 직접 설정해야 할 것이 많다.
- Spring Boot 는 그 복잡한 설정을 대신 처리해 주는 도구다. 별다른 설정 없이 바로 실행되도록 만들어 주기 때문에, 요즘은 대부분 Spring Boot로 개발을 시작한다.
이 시리즈도 Spring Boot를 기준으로 진행하며, 편의상 그냥 Spring이라고 부른다.
준비물
설치할 것은 두 가지다.
JDK (Java Development Kit)
Spring은 Java로 동작하므로 JDK가 반드시 필요하다. Spring Boot 4.x는 Java 17 이상을 요구하는데, 안정적인 LTS 버전인 Java 21을 권장한다.
Java 시리즈를 진행하면서 이미 설치했다면 버전만 확인하면 된다. 터미널이나 명령 프롬프트에 다음을 입력한다.
java -version
17 이상이 출력되면 통과다. 설치되어 있지 않다면 Adoptium(Temurin) 같은 곳에서 JDK 21을 받으면 된다.
IntelliJ IDEA
Java와 Spring 개발에 가장 널리 쓰이는 IDE다. 무료인 Community Edition으로도 이번 시리즈는 충분히 따라올 수 있다.
- 다운로드: jetbrains.com/idea
Ultimate(유료) 버전에는 Spring 전용 편의 기능이 더 있지만, 입문 단계에서는 Community로도 문제가 없다.
프로젝트 생성 (Spring Initializr)
Spring 프로젝트는 보통 start.spring.io 라는 사이트에서 기본 틀을 만들어 받는다. 브라우저에서 start.spring.io 에 접속한다.
설정은 다음과 같이 잡는다.
항목 선택 값 설명
| Project | Gradle - Groovy | 빌드 도구. 요즘은 Gradle을 많이 쓴다 |
| Language | Java | |
| Spring Boot | 기본 선택된 안정 버전 (4.0.x) | SNAPSHOT, M이 붙은 버전은 피한다 |
| Group | com.example | 보통 회사 도메인을 거꾸로 쓴다. 연습용은 그대로 둬도 된다 |
| Artifact | demo | 프로젝트 이름 |
| Packaging | Jar | |
| Java | 21 | 설치한 JDK 버전에 맞춘다 |
오른쪽 Dependencies(의존성) 영역에서 ADD DEPENDENCIES 버튼을 누르고 다음 하나만 추가한다.
- Spring Web : 웹 서버와 REST API를 만들기 위한 핵심 의존성
의존성(Dependency)이란 내 프로젝트가 가져다 쓰는 외부 기능을 말한다. 지금은 필요한 부품을 골라 담는다는 정도로 이해하면 충분하다.
선택을 마쳤으면 아래 GENERATE 버튼을 눌러 zip 파일을 받고 압축을 푼다. 그다음 IntelliJ에서 File → Open 으로 압축을 푼 폴더를 열면 된다. 처음 열면 Gradle이 필요한 파일을 자동으로 내려받느라 몇 분 정도 걸릴 수 있다.
프로젝트 구조 살펴보기
IntelliJ에서 프로젝트가 열리면 왼쪽에 여러 폴더가 보인다. 처음에는 복잡해 보이지만 실제로 알아야 할 것은 몇 개 되지 않는다.
demo
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com.example.demo
│ │ │ └── DemoApplication.java ← 시작점
│ │ └── resources
│ │ ├── static ← 정적 파일(이미지, css 등)
│ │ ├── templates ← 화면 템플릿
│ │ └── application.properties ← 설정 파일
│ └── test ← 테스트 코드
└── build.gradle ← 의존성/빌드 설정
핵심은 네 가지다.
- DemoApplication.java : 프로그램이 시작되는 곳이다. 여기서 서버가 켜진다.
- src/main/java : 우리가 작성할 Java 코드가 들어가는 공간이다.
- application.properties : 포트 번호, DB 정보 같은 설정을 적는 파일이다. 앞으로 자주 다루게 된다.
- build.gradle : 앞에서 고른 의존성이 적혀 있는 파일이다. 부품 목록이라고 보면 된다.
DemoApplication.java 를 열어 보면 다음과 같이 생겼다.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication 이라는 한 줄이 이 프로그램이 Spring Boot 앱이라는 것을 선언해 주는 핵심이다. 이 어노테이션이 정확히 무슨 일을 하는지는 며칠 뒤에 따로 다루므로, 오늘은 이것이 시작 지점이라는 정도만 기억하면 된다.
첫 실행
DemoApplication.java 의 main 메서드 옆에 있는 초록색 실행 버튼을 누른다. 콘솔 아래쪽에 로그가 출력되고, 마지막에 다음과 비슷한 문구가 보이면 성공이다.
Tomcat started on port 8080 (http)
Started DemoApplication in 1.5 seconds
Spring Boot에는 톰캣(Tomcat)이라는 웹 서버가 내장되어 있어서, 따로 서버를 설치하지 않아도 바로 실행된다. 이 점이 Spring Boot의 큰 장점이다.
이제 브라우저 주소창에 다음을 입력한다.
http://localhost:8080
아직 만든 화면이 없으므로 에러 페이지(Whitelabel Error Page)가 표시된다. 이는 서버가 정상적으로 켜졌다는 뜻이며, 단지 보여줄 화면이 없다는 의미일 뿐이다.
화면 하나 띄워보기
기왕 서버를 켰으니 화면 하나는 띄우고 마무리한다. DemoApplication.java 가 있는 폴더(com.example.demo)에 HelloController 라는 새 Java 클래스를 만들고 다음과 같이 작성한다.
package com.example.demo;
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!";
}
}
저장한 뒤 서버를 다시 실행하고, 브라우저에서 다음 주소로 접속한다.
http://localhost:8080/hello
화면에 Hello, Spring! 이 보이면 성공이다. 각 줄의 의미를 지금 전부 이해하지 못해도 괜찮다.
- @RestController : 이 클래스가 웹 요청을 처리한다는 표시다.
- @GetMapping("/hello") : /hello 주소로 요청이 들어오면 아래 메서드를 실행하라는 의미다.
- return "Hello, Spring!" : 그 결과로 이 문자열을 화면에 보여주라는 의미다.
이 흐름, 즉 주소 요청 → 메서드 실행 → 응답이 Spring 웹 개발의 가장 기본 원리다. 앞으로 하나씩 자세히 뜯어볼 것이다.
정리
오늘 한 일을 정리하면 다음과 같다.
- JDK와 IntelliJ 설치 확인
- Spring Initializr로 프로젝트 생성
- 프로젝트 구조 파악
- 서버 실행 후 첫 화면(Hello, Spring!) 띄우기
별것 아닌 것처럼 보여도, 직접 서버를 켜고 화면을 띄우는 것이 입문에서 가장 큰 고비다. 여기까지 왔다면 절반은 온 셈이다.
다음 2일차에서는 오늘 잠깐 지나간 IoC와 DI를 다룬다. Spring을 이해하는 데 가장 중요한 개념이며, Spring이 왜 그렇게 불리는지 그 핵심 원리를 알게 될 것이다.
'Spring > Spring 기초 및 세팅' 카테고리의 다른 글
| Spring day 6 (0) | 2026.06.23 |
|---|---|
| Spring day 5 (0) | 2026.06.22 |
| Spring day 4 (0) | 2026.06.21 |
| Spring day 3 (0) | 2026.06.20 |
| Spring day 2 (0) | 2026.06.19 |