👀 백엔드 공부를 병행하기 위해 어떤 언어로 해야할 지 고민이 많았다. 내가 프론트엔드로 시작을 해서
Node.js
로 시작 하면 좋을 거 같아서Nest.js
를 생각하긴 했었는데, 주위에 도움을 받고 질문하기 좋은 건Java
Spring Boot
인 거 같아서 여기로 다시 도전을 해볼까 한다.
프로그램 | 설명 | 다운로드 링크 |
---|---|---|
JDK (Java Development Kit) | Java 실행 환경 (Java 21 LTS 추천) | 🔗JDK 21 다운로드 |
Maven 또는 Gradle | 프로젝트 빌드 및 의존성 관리 | JDK 설치 시 기본 포함 |
PostgreSQL | 데이터 저장용 DBMS | 🔗 PostgreSQL 다운로드 |
pgAdmin (PostgreSQL 관리 GUI 툴) | PostgreSQL 데이터 관리용 GUI | PostgreSQL 설치 시 포함 |
cmd 터미널에서 java -version
을 치면 버전이 나오는데 없다고 나오면 윈도우 환경변수 설정을 한다.
- 고급 시스템 설정 (내 PC -> 속성 -> 고급 or win 검색창 고급 시스템 설정)
- 환경변수 클릭
위 아래 두개의 환경변수 목록이 나오는데 아래 시스템 변수에 JAVA_HOME이 없으면 새로 만들기
- 새로 만들기 후 해당 JDK 설치된 경로 및 변수명 입력
- 시스템 변수에 path 영역을 찾아서 편집 클릭 금방 만든 변수에 bin 폴더 path 추가
- 터미널에서
echo %JAVA_HOME%
을 치면C:\Program Files\Eclipse Adoptium\jdk-21.0.6.7-hotspot
가 나오면 정상적으로 설정 됨
- Spring Initializr 접속
https://start.spring.io/ 로 접속한다.
- 옵션 선택
Project
: Maven or Gradle 선택Language
: 언어 선택 Spring Boot
: 버전 선택 (기본 선택이 3.4.3 으로 되어있는데 이게 안정적인 버전인거 같아서 그대로 선택)Project Metadata
:Group
: 패키지 네임스페이스를 설정하는 부분 개인 프로젝트니까 그대로 사용Artifact
: 프로젝트 기본 애플리케이션 이름 및 JAR 파일 이름. (예를 들어 my-spring-app을 입력하면 빌드 결과가 my-spring-app.jar가 됨)Name
: 프로젝트 애플리케이션 이름 Artifact
와 동일하게 설정되는 경우가 많음 Artifact
와 동일하게 설정Description
: 설명 프로젝트에 대한 간단한 설명을 입력하는 부분Package Name
: 기본 패키지 경로 Group
+ Artifact
조합을 자동 생성됨Packaging
: JAR 또는 WAR 선택Java
: 사용할 Java 버전 Spring Boot 3.x 이상에서는 Java 17 이상 필수 LTS 버전 21 선택Spring Boot 프로젝트를 생성할 때 JAR과 WAR 중 선택해야 하는 이유는 배포 방식 때문입니다.
두 개의 차이점을 이해하면 프로젝트의 배포 방식에 따라 적절한 선택을 할 수 있습니다.
JAR (Java ARchive) - 독립 실행형
항목 | 설명 |
---|---|
파일 확장자 | .jar |
서버 포함 여부 | ✅ 내장 웹 서버 포함 (Tomcat, Jetty, Undertow 등) |
실행 방식 | java -jar mayapp.jar 로 실행 가능 |
배포 대상 | 독립적인 서버 환경 (AWS EC2, VPS, Docker 등) |
Spring Boot 기본값 | JAR (추천) |
JAR의 특징
java -jar myapp.jar
로 실행 가능WAR (Web Apllication Archive) - 외부 서버용
항목 | 설명 |
---|---|
파일 확장자 | .war |
서버 포함 여부 | 내장 서버 없음 (Tomcat, JBoss 같은 외부 WAS 필요) |
실행 방식 | Tomcat, WildFly(JBoss), WebSphere 등에 배포 |
배포 대상 | 기존 웹 서버(WAS, Web Application Server) 환경 |
Spring Boot 기본값 | 기본적으로 WAR 아님 (설정 변경 필요) |
WAR의 특징
Zip
파일이 다운로드 되고 압축을 풀고 IDE에서 오픈한다.터미널 또는 CMD에서 프로젝트 폴더로 이동한 후 실행한다.
Maven을 사용하는 경우
./mvnw spring-boot:run
Windows에서
mvnw.cmd spring-boot:run
MavGradleen을 사용하는 경우
./gradlew bootRun
Windows에서
gradlew.bat bootRun
Maven 또는 Gradle로 JAR 파일을 빌드하여 실행할 수도 있다.
JAR 파일 빌드 Maven 사용 시
./mvnw clean package
JAR 파일 빌드 Gradle 사용 시
./gradlew clean build
빌드 후 target/ 또는 build/libs/ 폴더에 .jar 파일이 생성됨
우선 src/main/resources/application.properties
에 서버 포트가 설정 되어 있는지 확인한다.
#application.properties
spring.application.name=demo
server.port=9090
./gradlew bootRun
을 사용하여 실행한다.
PS C:\Users\sehye\바탕 화면\code\study\First-Spring-Boot-Project\demo\demo> ./gradlew bootRun
> Task :bootRun
. ____ _ __ _ _
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.3)
2025-03-16T23:04:27.720+09:00 INFO 16508 --- [demo] [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 21.0.6 with PID 16508 (C:\Users\sehye\바탕 화면\code\study\First-Spring-Boot-Project\demo\demo\build\classes\java\main started by sehye in C:\Users\sehye\바탕 화면\code\study\First-Spring-Boot-Project\demo\demo)
2025-03-16T23:04:27.722+09:00 INFO 16508 --- [demo] [ main] com.example.demo.DemoApplication : No active profile set, falling back to 1 default profile: "default"
2025-03-16T23:04:28.022+09:00 INFO 16508 --- [demo] [ main] com.example.demo.DemoApplication : Started DemoApplication in 0.552 seconds (process running for 0.74)
BUILD SUCCESSFUL in 2s
tasklist | findstr java
#cmd
C:\Users\sehye>tasklist | findstr java
java.exe 4512 Console 1 241,192 K
java.exe 8464 Console 1 541,940 K
java.exe 7736 Console 1 594,836 K
java.exe 18340 Console 1 306,036 K
java.exe 12468 Console 1 769,248 K
java.exe 6872 Console 1 504,448 K
java.exe 12680 Console 1 113,488 K
java.exe 18212 Console 1 135,852 K
현재 18212 제외 다 종료를 하면된다.
모든 Java 프로세스 한꺼번에 종료
taskkill /F /IM java.exe
특정 Java 프로세스 종료 (Windows)
taskkill /F /PID 4512
taskkill /F /PID 8464
taskkill /F /PID 7736
taskkill /F /PID 18340
taskkill /F /PID 12468
taskkill /F /PID 6872
taskkill /F /PID 12680