목차
소개 (Introduction)
VS Code(비주얼 스튜디오 코드) 환경에서 Java Spring Boot 프로젝트를 생성하고 실행해 본 후기입니다. 이번 포스트에서는 Spring Initializr를 통해 Maven 기반 Spring Boot HelloWorld 프로젝트를 만들고, 코드를 실행 및 디버깅하는 과정을 상세히 다룹니다. Java 21 LTS와 Spring Boot 3.5.3 조합으로 실습하였으며, 프로젝트 빌드, 웹 페이지 출력, 단위 테스트, VSCode 디버깅 설정까지 개발자로서의 경험과 함께 설명합니다. VSCode의 가벼운 편집기 특성과 확장팩을 활용한 Spring 개발이 얼마나 편리한지, 그리고 어떤 수동 설정이 필요한지 알아보겠습니다.
개발 환경 (Environment Setup)
Spring Boot 프로젝트를 진행한 개발 환경은 다음과 같습니다:
- OS: Windows 11 (64-bit)
- JDK: OpenJDK 21.0.7 (Amazon Corretto) – Java 21 LTS 버전
- Maven: Apache Maven 3.9.10 (Maven Wrapper 사용)
- IDE: Visual Studio Code 1.80 (확장팩: Java Extension Pack, Spring Boot Extension Pack 등 설치)
# Java 버전 확인
$ java -version
openjdk version "21.0.7" 2025-04-15 LTS
OpenJDK Runtime Environment Corretto-21.0.7.6.1 (build 21.0.7+6-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.7.6.1 (build 21.0.7+6-LTS, mixed mode)
# Maven 버전 확인
$ mvn -version
Apache Maven 3.9.10 (...SNIPPED...)
Java version: 21.0.7, vendor: Amazon.com Inc., runtime: ...\jdk21.0.7_6
Default locale: ko_KR, platform encoding: UTF-8
OS name: "windows 11", version: "10.0", arch: "amd64"
위와 같이 Java 21과 Maven이 정상 설정되어 있고, VSCode에 Java 및 Spring 관련 확장팩이 설치되어 있다면 준비 완료입니다. 이제 VSCode에서 Spring Boot HelloWorld 프로젝트를 만들어보겠습니다.
Spring Boot 프로젝트 생성 (Hello World 프로젝트)
VSCode에서는 Spring Initializr 확장 기능을 통해 GUI 없이도 Spring Boot 프로젝트를 쉽게 생성할 수 있습니다. Command Palette를 열어 Spring Initializr 명령을 실행하면 프로젝트 설정 마법사가 진행됩니다:

- Command Palette 열기: Ctrl + Shift + P
- Spring Initializr 실행: Spring Initializr: Generate a Maven Project 명령 선택
- 프로젝트 정보 입력: 프롬프트에 따라 아래 정보를 입력/선택합니다.
- Project Type: Maven Project
- Language: Java
- Spring Boot 버전: 3.5.3 (Spring Boot 3.x 최신)
- Group Id: com.example
- Artifact Id: modern-spring-demo
- Package Name: (자동으로 com.example.modern 지정)
- Packaging: Jar
- Java Version: 21
- Dependencies: Spring Web, Thymeleaf (필요한 의존성 선택)
- 생성 및 열기: 프로젝트 생성 위치를 선택하고 “Open in new window”로 완료합니다.
프로젝트가 생성되면 VSCode에 새 폴더로 열리며, Maven Wrapper와 기본 폴더 구조가 만들어집니다. Spring Initializr가 생성한 주요 구조는 다음과 같습니다:
modern-spring-demo/
├── mvnw* # Maven Wrapper (Linux/Mac 실행 스크립트)
├── mvnw.cmd* # Maven Wrapper (Windows 실행 배치파일)
├── pom.xml # Maven 프로젝트 설정 파일
├── src/
│ ├── main/
│ │ ├── java/com/example/modern/
│ │ │ ├── ModernSpringDemoApplication.java # 메인 클래스
│ │ │ └── controller/HomeController.java # 간단한 컨트롤러
│ │ └── resources/
│ │ ├── application.properties # 설정 파일
│ │ └── templates/index.html # Thymeleaf 템플릿
│ └── test/
│ ├── java/com/example/modern/ModernSpringDemoApplicationTests.java # 기본 테스트
│ └── java/com/example/modern/controller/HomeControllerTest.java # 컨트롤러 테스트
└── .vscode/
└── launch.json # VSCode 디버그 설정 파일
위 구조에서 보듯이 Maven 프로젝트 표준 구조가 생성되었습니다. pom.xml에는 Spring Boot와 의존성에 대한 Maven 설정이 들어있고, ModernSpringDemoApplication.java가 메인 클래스 역할을 합니다. 또한 Thymeleaf 템플릿(index.html)과 예제 Controller(HomeController.java), 그리고 간단한 테스트 코드까지 포함되어 시작부터 실행 가능한 상태입니다.
주요 코드 파일 분석 (Project Code Overview)
pom.xml 설정
Spring Initializr가 생성한 pom.xml에는 프로젝트의 기본 Maven 설정과 의존성이 정의되어 있습니다. 주요 내용을 살펴보면:
- Spring Boot Parent: Spring Boot starter-parent 3.1.6 적용 (Spring Boot BOM 관리).
- Java 버전 속성: <java.version>21</java.version>로 Java 21 사용 설정.
- 의존성 (Dependencies): Spring Web, Spring Thymeleaf, Spring Boot Test 등이 추가됨:
- spring-boot-starter-web – Spring MVC (내장 톰캣, DispatcherServlet 등 포함)
- spring-boot-starter-thymeleaf – Thymeleaf 템플릿 엔진
- spring-boot-starter-test – JUnit5와 Spring Test (테스트용, scope=test)
- 플러그인 (Plugins): Maven Compiler Plugin(3.10.1) – <release>21</release>로 Java 컴파일 타겟 설정, Spring Boot Maven Plugin 등 포함.
이러한 설정 덕분에 Java 21로 컴파일되고 Spring Boot 실행을 위한 준비가 됩니다. 특별한 수정 없이도 기본 프로젝트가 동작하도록 Spring Boot의 의존성과 플러그인이 모두 세팅되어 있죠.
메인 클래스 – ModernSpringDemoApplication.java
src/main/java/com/example/modern/ModernSpringDemoApplication.java 파일이 Spring Boot 메인 애플리케이션 클래스입니다. Spring Boot는 이 클래스의 main 메서드로부터 시작됩니다:
@SpringBootApplication
public class ModernSpringDemoApplication {
public static void main(String[] args) {
SpringApplication.run(ModernSpringDemoApplication.class, args);
}
}
- @SpringBootApplication 애노테이션으로 이 클래스가 SpringBoot의 설정과 컴포넌트 스캔의 시작점임을 나타냅니다.
- SpringApplication.run(...) 호출로 내장 톰캣 서버가 기동되고 애플리케이션이 시작됩니다.
컨트롤러와 뷰 템플릿 – HomeController.java & index.html
HomeController는 간단한 웹 컨트롤러로 HTTP 요청에 대한 응답을 처리합니다. src/main/java/com/example/modern/controller/HomeController.java:
@Controller
public class HomeController {
@GetMapping("/")
public String home(Model model) {
model.addAttribute("message", "Hello, Modern Spring with Java 21!");
return "index";
}
}
- 클래스에 @Controller를 부여하여 Spring MVC 컨트롤러로 등록하였고,
- @GetMapping("/")으로 루트 경로에 대한 GET 요청을 처리합니다.
- home 메서드는 매개변수로 전달된 Model에 "message" 속성을 넣고 "index" 문자열을 반환합니다. 여기서 "index"는 뷰 이름으로, src/main/resources/templates/index.html 파일을 가리킵니다.
템플릿 파일 index.html은 Thymeleaf 문법으로 작성된 간단한 HTML입니다. <h1> 태그에 ${message} 변수를 출력하도록 되어 있어, 컨트롤러가 넘긴 메시지가 페이지에 나타납니다:
<!-- templates/index.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8" /><title>Modern Spring Demo</title></head>
<body>
<h1 th:text="${message}">Hello, World!</h1>
</body>
</html>
Thymeleaf 덕분에 서버 측에서 모델에 담은 "Hello, Modern Spring with Java 21!" 문자열이 브라우저 화면에 동적으로 출력됩니다.
설정 파일 – application.properties
src/main/resources/application.properties에는 필요한 애플리케이션 설정을 정의할 수 있습니다. 현재 프로젝트에서는 두 가지 설정이 들어갔습니다:
server.port=8080
spring.thymeleaf.cache=false
- server.port=8080 : 애플리케이션 기본 포트를 지정합니다 (8080은 기본값이지만 명시적으로 표기).
- spring.thymeleaf.cache=false : Thymeleaf 템플릿 캐싱을 끄는 설정으로, 개발 시 템플릿 수정이 바로 반영되도록 도와줍니다.
별도의 설정을 추가하지 않아도 Spring Boot는 기본 설정으로 동작하지만, 개발 편의를 위해 템플릿 캐싱을 비활성화한 모습입니다.
테스트 및 검증 (Unit Testing)
Spring Initializr는 기본적인 테스트 클래스를 함께 생성해 줍니다. ModernSpringDemoApplicationTests.java에는 Spring Boot 컨텍스트가 정상적으로 로드되는지 확인하는 빈 테스트 (@SpringBootTest와 contextLoads() 메서드)가 포함되어 있습니다. 추가로, 우리는 홈 컨트롤러의 동작을 검증하기 위해 MockMVC를 사용한 단위 테스트 HomeControllerTest.java를 작성했습니다.
컨트롤러 테스트(HomeControllerTest.java)에서는 Spring Boot의 @WebMvcTest 슬라이스를 사용하여 웹 계층만 로드하고, MockMvc로 가상의 요청을 보내어 응답을 검증합니다:
@WebMvcTest(HomeController.class)
class HomeControllerTest {
@Autowired
MockMvc mockMvc;
@Test
@DisplayName("GET / 요청 시 index 뷰와 모델 메시지 확인")
void homeEndpointShouldReturnIndexView() throws Exception {
mockMvc.perform(get("/"))
.andExpect(status().isOk())
.andExpect(view().name("index"))
.andExpect(model().attribute("message", "Hello, Modern Spring with Java 21!"));
}
}
위 테스트는 GET / 요청을 보내면 HTTP 200 OK 상태와 "index" 뷰가 반환되는지, 그리고 모델에 "message" 값이 예상대로 설정되는지를 검증합니다. 실제 애플리케이션을 띄우지 않고도 MVC 레이어를 테스트할 수 있어 효율적입니다. 이 테스트를 포함해 모든 테스트가 통과하면, 애플리케이션의 기본 동작이 올바르다는 것을 확인할 수 있습니다.
Maven 빌드 & 실행 (Build and Run)
이제 코드를 실행해보겠습니다. VSCode 내장 터미널이나 시스템 터미널에서 Maven Wrapper를 이용해 빌드 및 실행을 진행합니다. Maven Wrapper(mvnw/mvnw.cmd)는 Maven이 설치되어 있지 않아도 프로젝트 로컬의 Maven 디스트리뷰션을 자동으로 다운로드하여 사용하게 해주는 스크립트입니다.
Windows 환경에서는 프로젝트 디렉터리에서 다음 명령어를 실행하세요:
# 1. 프로젝트 빌드 (테스트 포함 컴파일 및 패키징)
mvnw.cmd clean package
# 2. 애플리케이션 실행 (Spring Boot 애플리케이션 시작)
mvnw.cmd spring-boot:run
첫 번째 명령(clean package)은 프로젝트를 빌드하고 테스트를 수행하여 target/ 폴더에 실행가능한 JAR (modern-spring-demo-0.0.1-SNAPSHOT.jar)을 생성합니다. 두 번째 명령(spring-boot:run)은 Maven의 Spring Boot 플러그인을 통해 애플리케이션을 실행합니다.
실행 후 콘솔에는 Spring Boot 로고와 함께 부팅 로그가 표시되며, 내장 톰캣이 포트 8080에서 기동됩니다. 예를 들어 로그 끝부분에 다음과 같은 메시지가 나타납니다:
INFO --- [main] c.e.m.ModernSpringDemoApplication : Started ModernSpringDemoApplication in 2.35 seconds (process running for 2.99)
애플리케이션이 성공적으로 시작되었다는 안내와 약 2.3초의 기동 시간을 확인할 수 있습니다. 이제 웹 브라우저에서 http://localhost:8080으로 접속하거나, 터미널에서 curl http://localhost:8080/ 명령으로 웹 응답을 확인해 봅시다. 브라우저 화면에는 Hello, Modern Spring with Java 21! 라는 환영 메시지가 출력됩니다

이는 우리가 Thymeleaf 템플릿에 설정한 내용이 정상적으로 렌더링되었다는 의미입니다.
TIP: VSCode 상단 메뉴의 “Spring Boot Dashboard” (확장팩 제공 기능)를 이용하면 GUI로 애플리케이션을 실행/중지하고 로그를 볼 수도 있습니다. 이번 포스트에서는 CLI를 이용했지만, VSCode 내의 Spring Boot 대시보드도 편리한 옵션입니다.
VSCode 디버깅 설정 (Debug Configuration in VSCode)
이제 VSCode에서 브레이크포인트를 걸고 디버깅하는 방법을 살펴보겠습니다. VSCode로 Java 애플리케이션을 디버깅하려면 .vscode/launch.json 파일에 적절한 설정이 필요합니다. 프로젝트 생성 시 기본 launch.json이 생성되었지만, VSCode 기본 설정상 .vscode 폴더가 파일 탐색기에 보이지 않을 수 있습니다 (VSCode는 기본적으로 .git, .vscode 등 폴더를 숨깁니다).
먼저 파일 탐색기에서 .vscode 폴더를 보이도록 설정합시다. VSCode Settings (Ctrl + ,)에서 Files: Exclude 항목을 찾은 후, /.vscode 패턴을 목록에서 제거합니다. 그러면 .vscode/launch.json 파일이 탐색기에서 보일 것입니다 (아래 이미지 참고).
이제 launch.json을 열어 디버그 설정을 확인해봅니다. Spring Boot 프로젝트의 경우 VSCode가 아래와 비슷한 설정을 자동 생성했을 것입니다:
{
"configurations": [
{
"type": "java",
"name": "ModernSpringDemoApplication",
"request": "launch",
"mainClass": "com.example.modern_spring_demo.ModernSpringDemoApplication",
"projectName": "modern-spring-demo"
}
]
}
여기서 중요한 것은 mainClass와 projectName이 올바르게 지정되어야 한다는 점입니다. 간혹 VSCode가 Artifact Id에 하이픈이 있을 경우(modern-spring-demo) 이를 패키지 이름으로 잘못 인식하여 위처럼 com.example.modern_spring_demo.ModernSpringDemoApplication으로 설정하는 버그가 있는데, 이를 com.example.modern.ModernSpringDemoApplication으로 올바르게 수정해야 합니다. 또한 projectName은 폴더 명과 일치해야 하므로 modern-spring-demo로 되어있는지 확인합니다.
그리고 디버그 콘솔 대신 VSCode 터미널에 애플리케이션 로그를 출력하고 싶다면, 설정에 "console": "integratedTerminal" 옵션을 추가하면 됩니다. 최종적으로 완성된 launch.json 설정 예시는 다음과 같습니다:
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Launch Modern Spring Demo",
"request": "launch",
"mainClass": "com.example.modern.ModernSpringDemoApplication",
"projectName": "modern-spring-demo",
"console": "integratedTerminal"
}
]
}

위 설정에서 name은 디버그 구성의 표시 이름이고, request는 launch(실행) 타입, mainClass/projectName이 올바르게 지정되어 있습니다. console: integratedTerminal 덕분에 디버그 시 터미널 창에서 Spring Boot 로그를 볼 수 있어 편리합니다 (예: 컬러 로그 출력 등).
설정을 저장한 뒤, VSCode 좌측 Run and Debug 뷰(실행 및 디버그)로 이동해 봅시다. 이제 디버깅 실행을 할 준비가 되었습니다.
디버깅 실행 및 Breakpoint 테스트 (Launching Debug & Breakpoints)
디버그 구성을 마쳤으니, 실제로 애플리케이션을 디버깅 모드로 실행하고 브레이크포인트에서 코드 실행을 멈춰보겠습니다.
- VSCode 좌측의 Run and Debug 아이콘을 클릭하거나 Ctrl + Shift + D 단축키로 디버그 패널을 엽니다.
- 상단의 디버그 구성에서 방금 설정한 “Launch Modern Spring Demo”를 선택합니다 (드롭다운에서 선택 가능).
- Breakpoint 설정: 디버깅하고 싶은 지점에 브레이크포인트를 겁니다. 예를 들어 HomeController.java의 return "index"; 행에 클릭하여 빨간 점을 추가합니다 (요청이 들어왔을 때 응답 직전에 멈추도록).
- 디버그 시작: 디버그 패널 상단의 초록색 ▶️ Start 버튼을 누르거나 F5 키를 눌러 디버깅을 시작합니다.
애플리케이션이 디버그 모드로 구동되며, 이전과 유사하게 Spring Boot 로그가 터미널에 출력됩니다. 이제 브라우저에서 http://localhost:8080을 다시 요청해보겠습니다. 요청이 들어오면, 우리가 건 브레이크포인트에서 실행이 일시 정지될 것입니다

위 스크린샷은 HomeController.home() 메서드 내에 브레이크포인트가 걸려 실행이 중단된 VSCode의 모습을 보여줍니다. 좌측 Variables 패널에서는 현재 메서드의 지역변수 model과 this 객체를 확인할 수 있고, 하단 Call Stack에서는 호출 스택이 표시됩니다. 또한 TERMINAL 탭에는 애플리케이션 로그가 지속적으로 나타나며(예: "Started ModernSpringDemoApplication..." 등의 메시지), DEBUG CONSOLE에서는 디버그와 관련된 출력이나 표현식 평가를 수행할 수 있습니다.
브레이크포인트에서 일시 정지된 상태에서, 우리는 애플리케이션의 흐름을 세밀하게 제어할 수 있습니다. 다음은 디버그 제어에 사용되는 주요 단축키/버튼입니다:
단축키 / 버튼 설명 (Debug Action)
| F5 (Continue) | 계속 실행 – 다음 중단점까지 이어서 실행 |
| F10 (Step Over) | 다음 줄 실행 (현재 함수 내부 실행 건너뜀) |
| F11 (Step Into) | 메서드 내부로 진입 (한 단계 더 상세 실행) |
| Shift + F11 (Step Out) | 메서드 빠져나오기 – 현재 함수 실행을 마치고 호출부로 복귀 |
| ▷ Resume (재개) | Continue와 동일 (중단점 다음까지 재개) |
| ✂️ Disconnect | 디버그 세션 종료 (애플리케이션 중단) |
브라우저 요청으로 중단점에 멈춘 상태에서, 위 명령들을 사용해 코드를 한 줄씩 살펴보거나 계속 진행할 수 있습니다. 예를 들어 F10을 누르면 model.addAttribute(...) 행을 실행한 뒤 멈출 것이고, F5를 누르면 남은 코드를 실행하여 요청 처리를 완료합니다. F5(계속)를 눌러 애플리케이션을 이어서 실행하면 브레이크포인트가 해제되고, 브라우저는 응답을 받아 페이지를 로드합니다.
이제 브라우저 화면에 "Hello, Modern Spring with Java 21!" 메시지가 나타났을 것입니다. 만약 코드 변경을 했다면 브레이크포인트를 설정한 채로 새로고침하여 디버깅을 반복하고, 변수 값이나 로직 흐름을 면밀히 검토할 수 있습니다. VSCode를 통해 Spring Boot 애플리케이션을 디버그함으로써, 개발자는 코드 내부 동작을 파악하고 문제를 진단할 수 있습니다.
개발자 경험 및 첫인상 (Developer Experience)
VSCode에서의 Spring Boot 개발, 첫인상은 “가볍지만 충분하다”였습니다. 일반적으로 Spring 개발에는 이클립스 기반 STS(Spring Tool Suite)나 IntelliJ IDEA를 떠올리기 마련인데, VSCode는 훨씬 경량 에디터임에도 불구하고 필요한 기능을 확장팩으로 보완하여 쾌적한 개발 환경을 제공합니다. Java Extension Pack과 Spring Boot Extension Pack을 설치하니 코드 작성 중 자동완성(IntelliSense), 오류 표시, Maven 의존성 관리 등도 큰 불편 없이 이루어졌습니다.
프로젝트 빌드/실행 속도도 준수했습니다. VSCode 자체가 가벼운 덕분에 에디터의 메모리 사용량이 적었고, Java 21 + Spring Boot 3 조합의 성능 최적화로 애플리케이션 시작 시간도 약 2~3초로 매우 빠르게 느껴졌습니다. (물론 빈 프로젝트라 가벼운 것이지만, IntelliJ 등에서 동일 프로젝트를 구동하는 것과 비교하면 VSCode의 경량성이 체감됩니다.)
디버깅 경험 역시 놀라울 정도로 원활했습니다. Breakpoint 설정, 변수 조회, 스택 추적 등이 예상대로 동작했고, 별도 거추장스러운 설정 없이도 F5로 서버를 실행/중지할 수 있었습니다. 다만, VSCode에서는 IntelliJ처럼 Spring에 특화된 똑똑한 리팩토링 지원이나 컴파일 없이 바로바로 적용되는 핫스왑 (IntelliJ의 Reload Technology) 등은 조금 약할 수 있습니다. 하지만 기본적인 개발 사이클(코드 작성 -> 빌드/테스트 -> 디버깅)에는 전혀 부족함이 없었습니다.
처음 세팅 시 몇 가지 수동 설정이 필요했던 점은 실제 써보니 약간 번거롭게 느껴졌습니다. 예를 들어 .vscode/launch.json의 mainClass를 직접 고쳐주거나 숨김 폴더 설정을 바꾸는 작업은 초심자에겐 약간 혼란을 줄 수 있는 부분입니다. 이러한 부분만 알고 나면 이후 개발은 순조로웠지만, IDE의 자동화된 편리함에 익숙한 경우 VSCode는 약간의 손맞춤(tweaking)이 필요하다는 인상을 받았습니다.
장점과 단점 (Pros & Cons of VSCode for Spring)
VSCode로 Spring 프로젝트를 해보며 느낀 주요 장단점을 정리하면 다음과 같습니다:
✅ 장점:
- 가벼운 퍼포먼스: IntelliJ나 Eclipse에 비해 실행이 가볍고 메모리 사용량이 적어 개발 PC에 부담이 적습니다. 빌드/재기동도 신속합니다.
- 무료 및 확장성: VSCode는 오픈소스 무료 소프트웨어이며, 필요한 기능을 확장팩으로 취사선택할 수 있어 유연합니다. (예: Spring Boot Dashboard, Lombok 지원 등 추가 설치 용이)
- 쾌적한 에디팅: Visual Studio Code의 편집 기능(멀티커서 편집, 파일 탐색, 터미널 통합 등)은 그대로 이용하면서 Java/Spring 개발을 할 수 있습니다. 익숙한 개발자에게는 생산성이 높습니다.
- 디버깅 편의: 기본 제공되는 Java 디버거를 통해 브레이크포인트, 변수 조회, 조건부 중단점 등 현대적인 디버깅이 지원되고, Console/Terminal 출력 선택 등 개발자 편의를 세세하게 조정할 수 있습니다.
❗ 단점:
- 설정의 필요성: 초기 환경 구축 시 JDK/Maven 설치와 VSCode 확장팩 설치 등 사전 세팅이 필요합니다. 또한 IDE에 비해 자동화된 설정이 덜 되어있어 launch.json 수정 같은 수동 설정 작업이 가끔 요구됩니다.
- Spring 특화 기능 부족: IntelliJ IDEA의 Spring 지원 기능(예: 빈 검색, 의존성 그래프, 자동 리팩토링 등)에 비하면 VSCode는 기본 에디터이다 보니 Spring 프레임워크에 특화된 고급 기능은 상대적으로 적습니다. (대부분 코딩과 디버깅 위주)
- 복잡한 프로젝트 한계: 대규모 Enterprise 프로젝트의 경우 VSCode가 Manage하기 다소 버겁게 느껴질 수 있습니다. Maven 복합 프로젝트나 멀티모듈 구조에서의 네이밍, 디버깅 구성은 더 많은 수동 관리가 필요할 수 있습니다.
- 디버그 및 빌드 트러블슈팅: 간혹 VSCode에서는 빌드 실패 시 “Build failed, do you want to continue?” 경고가 나타나는데, 이때 원인을 파악하거나 무시 설정을 해야 하는 등 초보자에겐 당혹스러운 경우가 있을 수 있습니다. 이러한 부분은 커뮤니티 문서나 설정 조정을 통해 극복해야 합니다.
요약하면, VSCode는 “가볍고 필요한 만큼만 제공”하는 도구로서 Spring Boot 학습이나 경량 프로젝트에는 충분한 능력을 발휘했습니다. 다만 이미 IntelliJ와 같은 풀기능 IDE에 익숙한 개발자라면 일부 편의기능의 부재를 느낄 수 있고, 그 갭을 메우기 위해 몇 가지 익숙해져야 할 VSCode 설정이 있다는 점을 고려해야 합니다.
요약 표 (Quick Reference Summary)
아래 표는 이번 실습 내용을 간략히 정리한 것입니다. VSCode에서 Java Spring 프로젝트를 다룰 때 기억해 두면 좋을 핵심 사항들입니다:
항목 🗂️ 내용 📋
| 사용 기술 스택 | VSCode 1.80, OpenJDK 21 (Corretto), Maven 3.9.10, Spring Boot 3.5.3 |
| 프로젝트 생성 방법 | VSCode Spring Initializr (Maven 프로젝트, Java 21, Spring Web + Thymeleaf 선택) |
| 프로젝트 기본 구조 | src/main/java (애플리케이션, 컨트롤러 등), src/main/resources (프로퍼티, 템플릿), src/test/java (테스트), Maven Wrapper 포함 |
| 주요 코드 기능 | HomeController가 "/" 요청시 "Hello, Modern Spring with Java 21!" 메시지를 모델에 담아 index.html 뷰 반환 (Thymeleaf 템플릿에서 출력) |
| 단위 테스트 | @WebMvcTest로 컨트롤러 테스트, MockMvc로 뷰 이름과 모델 변수 검증 (모든 테스트 통과) |
| 빌드 및 실행 명령 | mvnw.cmd clean package (빌드 & 테스트) → mvnw.cmd spring-boot:run (애플리케이션 실행) |
| 실행 결과 확인 | 브라우저 열어서 http://localhost:8080 접속 → "Hello, Modern Spring with Java 21!" 페이지 확인 |
| 디버깅 설정 팁 | VSCode 설정에서 .vscode 폴더 보이도록 조정, launch.json의 mainClass와 projectName 수동 확인/수정 필요 |
| 디버깅 사용법 | Run & Debug 메뉴에서 구성 선택 후 F5 실행 → Breakpoint 설정 지점에서 일시 중지 → F10/F11 단계 실행, F5 재개 등 |
| VSCode 사용 소감 | 경량 IDE로서 쾌적, 기본기에 충실. 다만 자동 설정 부분은 부족하여 약간의 수동 튜닝 필요, 소형 프로젝트에 특히 적합 |
이 정리만 봐도 VSCode에서 Java Spring 프로젝트를 다루는 흐름을 빠르게 떠올릴 수 있을 것입니다. 🙂
FAQ (자주 묻는 질문)
Q1. VSCode에서 Spring Initializr로 새 Spring Boot 프로젝트를 만들려면 어떻게 하나요?
A: VSCode에서 Ctrl + Shift + P로 Command Palette를 연 후 “Spring Initializr: Generate a Maven Project”를 선택하세요. 그런 다음 나타나는 프롬프트에 프로젝트 정보(언어, Spring Boot 버전, Group/Artifact Id, 의존성 등)를 입력하면 됩니다. 이 과정은 인터넷 연결을 통해 start.spring.io를 사용하므로, 입력 완료 후 프로젝트가 자동으로 생성되어 열립니다. (Spring Initializr 확장팩이 설치되어 있어야 합니다.)
Q2. Maven Wrapper(mvnw/mvnw.cmd)는 무엇이며, 어떻게 사용하나요?
A: Maven Wrapper는 해당 프로젝트에 Maven 실행파일을 동봉하여 Maven 설치 여부와 상관없이 빌드를 가능케 하는 도구입니다. Spring Initializr로 생성한 프로젝트에는 mvnw(유닉스용)와 mvnw.cmd(Windows용) 스크립트가 포함되어 있습니다. 터미널에서 Maven 명령을 실행할 때 전역 mvn 대신 프로젝트 내부의 mvnw를 호출하면, 지정된 Maven 버전을 자동으로 다운로드/사용하여 일관된 빌드 환경을 제공합니다. 요약하면 mvnw.cmd clean package처럼 Maven Wrapper를 쓰면 Maven 설치 없이도 빌드가 가능합니다.
Q3. Java 21로 Spring Boot 3 애플리케이션을 실행해도 호환되나요?
A: 네. Spring Boot 3 (Spring Framework 6 기반)은 최소 Java 17 이상을 요구하며, Java 21 LTS도 공식적으로 지원됩니다. Java 21에서 추가된 최신 기능(예: Virtual Threads 등)을 사용하려면 Spring Boot 3.2+ 이상에서 일부 설정이 필요할 수 있지만, 기본적인 Spring Boot 애플리케이션은 Java 21에서 문제없이 동작합니다. 본문의 예제 프로젝트도 Java 21로 빌드/실행했고, 모든 기능이 정상 작동하였습니다. 다만 주의사항으로, Java 21을 사용하려면 Maven 컴파일 플러그인 설정의 <release>21</release> 등이 필요하고(Spring Initializr가 자동 구성), 사용 라이브러리가 Java 21을 지원해야 한다는 점을 기억하세요.
Q4. VSCode에서 Spring Boot 애플리케이션을 디버그하려면 어떻게 해야 하나요?
A: VSCode에서 Java 애플리케이션 디버그는 launch.json 설정과 F5 동작으로 이뤄집니다. 먼저 .vscode/launch.json에 Spring Boot 메인 클래스와 프로젝트 정보를 제대로 설정해야 합니다 (보통 VSCode가 자동 생성하지만, 필요시 직접 수정). 그 후 좌측 Run and Debug 패널에서 해당 구성(Launch ...)을 선택하고 F5를 누르면 애플리케이션이 디버그 모드로 실행됩니다. 이제 코드 편집 창 좌측 여백을 클릭하여 중단점을 설정하고, 애플리케이션에 HTTP 요청 등을 보내면 해당 지점에서 실행이 멈춥니다. 디버그 모드에서 변수 값, 호출 스택을 확인할 수 있고, F10/F11 키로 한 줄씩 실행하거나, F5로 계속 진행할 수 있습니다. (디버그 중 언제든지 Shift+F5로 중지할 수도 있습니다.) VSCode의 Java Debugger 확장팩이 이러한 과정을 지원하며, UI도 비교적 직관적입니다.
Q5. Maven 빌드/실행을 VSCode GUI로도 할 수 있나요?
A: 있습니다. VSCode에 "Maven for Java" 확장이 설치되어 있으면, 사이드바의 Maven 패널에서 프로젝트의 Maven Lifecycle 목표(goal)를 클릭해서 실행할 수 있습니다. 예를 들어 package나 spring-boot:run 목표를 GUI로 트리에서 선택해 실행할 수 있죠. 또한 NPM 스크립트 실행하듯이 pom.xml 파일 상단의 "🔨" 아이콘을 눌러 바로 빌드하거나 테스트하는 기능도 있습니다. 다만 익숙하다면 터미널에서 mvnw 명령어를 직접 입력하는 게 빠를 수 있습니다.
결론 (Closing Remarks)
VSCode를 활용한 Java Spring Boot 프로젝트 설정부터 디버깅까지의 과정을 살펴보았습니다. 🙌 처음에는 익숙한 IntelliJ나 Eclipse와 다른 생소함이 있었지만, 결과적으로 가벼운 에디터 하나로도 충분히 Spring 애플리케이션 개발이 가능하다는 것을 확인했습니다. Java 21과 Spring Boot 최신 버전의 조합도 아무 문제없이 동작했고, 오히려 최신 LTS의 장점(속도 향상 등)을 누릴 수 있었습니다.
이 경험을 통해 작은 규모의 Spring 프로젝트나 학습용 프로젝트에서는 VSCode가 생산성과 효율성을 모두 잡을 수 있는 훌륭한 선택지임을 느꼈습니다. 특히 프론트엔드 개발 등 VSCode에 익숙한 개발자라면 별도의 무거운 IDE 설치 없이도 손쉽게 Spring에 입문할 수 있을 것입니다. 반면, 기업용 대형 프로젝트나 복잡한 설정이 필요한 상황에서는 여전히 전문 IDE의 도움을 받아야 할지도 모릅니다. 결국 도구는 선택의 문제이며, VSCode는 그 선택지 중 하나로서 충분한 가능성을 보여주고 있습니다.
앞으로 VSCode 환경에서 Spring Boot DevTools를 활용한 핫 리로드(Hot Reload) 실험이나, Docker와 연계한 개발 등도 시도해볼 계획입니다. 🚀 이 글이 VSCode로 Spring 프로젝트를 시작하려는 분들께 유용한 가이드가 되었길 바라며, 궁금한 점이나 더 좋은 팁이 있다면 언제든 공유해주세요!
※다음글
2025.07.23 - [IT 트렌드/알아두면 좋은 IT 상식] - Java Spring Boot로 Maven 빌드 및 배포하기: 초보자도 겁내지 마세요!
Java Spring Boot로 Maven 빌드 및 배포하기: 초보자도 겁내지 마세요!
목차 안녕하세요! 오늘은 Java Spring Boot를 통해 Maven으로 빌드하고 배포하는 과정을 처음 접하는 개발자분들을 위한 가이드를 준비했습니다. 처음 시작하는 분들은 환경 설정부터 배포까지 막막
kberry.tistory.com
2025.07.25 - [IT 트렌드/알아두면 좋은 IT 상식] - VSCode Spring 게시판 만들기: 드디어 새 게시물 페이지 구현
VSCode Spring 게시판 만들기: 드디어 새 게시물 페이지 구현
목차 지난 포스트에서는 VSCode로 Spring 게시판 만들기 프로젝트를 세팅하면서 PostgreSQL 데이터베이스까지 연동해 보았습니다. 빈 게시판이라 리스트 페이지는 만들어졌지만 아직 게시물이 하나도
kberry.tistory.com
추천 블로그 포스트 (Recommended Posts)
- [VS Code] VSCode에 Spring Boot 개발 환경 세팅 및 샘플 프로젝트 생성, 실행 – 오리엔탈킴의 블로그 (VSCode 확장팩 설치부터 Spring Initializr 사용, 기본 프로젝트 실행 방법 안내)
https://kim-oriental.tistory.com/21#:~:text=,Spring%20Boot%20VSCode
[VS Code] VSCode에 Spring Boot 개발 환경 세팅 및 샘플 프로젝트 생성, 실행
안녕하세요, 오늘은 MS(마이크로 소프트)의 오픈소스 무료 소스코드 편집 툴인 VS Code(비주얼 스튜디오 코드)에 Spring Boot 개발 환경을 세팅하고 간단히 프로젝트 생성 및 실행을 해보도록 하겠습
kim-oriental.tistory.com
- JDK 21, Spring Boot 3.4 버전업 가이드 – velog @dongvelop (Java 21과 Spring Boot 3.x 사용 시 변경사항 및 업그레이드 팁 정리, Java 21의 주요 기능도 소개)
https://velog.io/@dongvelop/JDK-21-Spring-Boot-3.4#:~:text=JDK%2021%2C%20Spring%20Boot%203,%EB%B2%84%EC%A0%84%EC%97%85%ED%95%98%EA%B8%B0%20%EC%A0%84%2C%20%EC%A3%BC%EC%9A%94%20%EB%B3%80%ED%99%94%EB%A5%BC%20%ED%8C%8C%EC%95%85%ED%95%A9%EB%8B%88%EB%8B%A4
JDK 21, Spring Boot 3.4 버전업 가이드
JDK 21, Spring Boot 3.4로 구성된 API Server를 버전업하기 전, 주요 변화를 파악합니다.
velog.io
- VS Code + Spring Boot 설치하기 + 첫 App 디버깅 – G0Yang 티스토리 (VSCode로 Spring Boot 개발을 시작하는 방법과 F5 디버깅 사용법을 간략히 정리한 블로그)
https://g0yang.tistory.com/21#:~:text=%EC%95%84%EB%9E%98%20%EC%88%9C%EC%84%9C%EB%8C%80%EB%A1%9C%20%EC%8B%A4%ED%96%89%EC%9D%84%20%ED%95%98%EB%A9%B4%20%EB%90%9C%EB%8B%A4
VS Code + Spring Boot 설치하기 + 첫 App 디버깅
아직 취직도 안한 상태에서 요즘 Spring이 유행한다길래 찾아보고 선행학습이라 생각하고 설치하는 법부터 간단하게 디버깅하는 방법을 찾아보고 정리해보려 합니다. 운영체제는 윈도우 10입니
g0yang.tistory.com
감사합니다.
'IT 트렌드 > 알아두면 좋은 IT 상식' 카테고리의 다른 글
| 개발자의 Git 브랜치 전략 일기 (0) | 2025.10.17 |
|---|---|
| Tomcat server.xml 설정 완벽 가이드: 운영/DevOps 실무 베스트 프랙티스 (5) | 2025.08.26 |
| VS Code 우클릭 메뉴 없어서 당황했다면? 레지스트리 수정으로 5분 만에 해결! (4) | 2025.08.01 |
| VSCode Spring 게시판 만들기: 드디어 새 게시물 페이지 구현 (5) | 2025.07.25 |
| Java Spring Boot로 Maven 빌드 및 배포하기: 초보자도 겁내지 마세요! (2) | 2025.07.23 |