[튜토리얼] Spring Boot 시작

NuyHes·2025년 3월 16일
0

튜토리얼

목록 보기
21/26
post-thumbnail

👀 백엔드 공부를 병행하기 위해 어떤 언어로 해야할 지 고민이 많았다. 내가 프론트엔드로 시작을 해서 Node.js로 시작 하면 좋을 거 같아서 Nest.js를 생각하긴 했었는데, 주위에 도움을 받고 질문하기 좋은 건 Java Spring Boot 인 거 같아서 여기로 다시 도전을 해볼까 한다.


1. Spring Boot 프로젝트 시작하기 전 필수 설치 프로그램 목록

프로그램설명다운로드 링크
JDK (Java Development Kit)Java 실행 환경 (Java 21 LTS 추천)🔗JDK 21 다운로드
Maven 또는 Gradle프로젝트 빌드 및 의존성 관리JDK 설치 시 기본 포함
PostgreSQL데이터 저장용 DBMS🔗 PostgreSQL 다운로드
pgAdmin (PostgreSQL 관리 GUI 툴)PostgreSQL 데이터 관리용 GUIPostgreSQL 설치 시 포함

Windows 환경 설정

cmd 터미널에서 java -version 을 치면 버전이 나오는데 없다고 나오면 윈도우 환경변수 설정을 한다.

  1. 고급 시스템 설정 (내 PC -> 속성 -> 고급 or win 검색창 고급 시스템 설정)

  1. 환경변수 클릭

위 아래 두개의 환경변수 목록이 나오는데 아래 시스템 변수에 JAVA_HOME이 없으면 새로 만들기

  1. 새로 만들기 후 해당 JDK 설치된 경로 및 변수명 입력

  1. 시스템 변수에 path 영역을 찾아서 편집 클릭 금방 만든 변수에 bin 폴더 path 추가

  1. 터미널에서 echo %JAVA_HOME%을 치면 C:\Program Files\Eclipse Adoptium\jdk-21.0.6.7-hotspot 가 나오면 정상적으로 설정 됨

2. Spring Boot 프로젝트 생성 방법

  1. Spring Initializr 접속

https://start.spring.io/ 로 접속한다.


  1. 옵션 선택
  • Project : Maven or Gradle 선택
  • Language : 언어 선택
  • Spring Boot : 버전 선택 (기본 선택이 3.4.3 으로 되어있는데 이게 안정적인 버전인거 같아서 그대로 선택)
  • Project Metadata :
    1. Group : 패키지 네임스페이스를 설정하는 부분 개인 프로젝트니까 그대로 사용
    2. Artifact : 프로젝트 기본 애플리케이션 이름 및 JAR 파일 이름. (예를 들어 my-spring-app을 입력하면 빌드 결과가 my-spring-app.jar가 됨)
    3. Name : 프로젝트 애플리케이션 이름 Artifact와 동일하게 설정되는 경우가 많음 Artifact와 동일하게 설정
    4. Description : 설명 프로젝트에 대한 간단한 설명을 입력하는 부분
    5. Package Name : 기본 패키지 경로 Group + Artifact 조합을 자동 생성됨
    6. Packaging : JAR 또는 WAR 선택
    7. Java : 사용할 Java 버전 Spring Boot 3.x 이상에서는 Java 17 이상 필수 LTS 버전 21 선택

🕵️ JAR , WAR 란?

Spring Boot 프로젝트를 생성할 때 JAR과 WAR 중 선택해야 하는 이유는 배포 방식 때문입니다.
두 개의 차이점을 이해하면 프로젝트의 배포 방식에 따라 적절한 선택을 할 수 있습니다.

JAR (Java ARchive) - 독립 실행형

항목설명
파일 확장자.jar
서버 포함 여부✅ 내장 웹 서버 포함 (Tomcat, Jetty, Undertow 등)
실행 방식java -jar mayapp.jar 로 실행 가능
배포 대상독립적인 서버 환경 (AWS EC2, VPS, Docker 등)
Spring Boot 기본값JAR (추천)

JAR의 특징

  • 내장 웹 서버 (Tomcat, Jettym Undertow)가 포함됨 (따로 설치할 필요 없음)
  • 실행 파일만 있으면 어디서든 java -jar myapp.jar로 실행 가능
  • 컨테이너(Docker 등)와 함께 사용하기 편리함
  • Spring Boot의 기본 실행 방식이므로 대부분 프로젝트에서 JAR를 선택함

WAR (Web Apllication Archive) - 외부 서버용

항목설명
파일 확장자.war
서버 포함 여부내장 서버 없음 (Tomcat, JBoss 같은 외부 WAS 필요)
실행 방식Tomcat, WildFly(JBoss), WebSphere 등에 배포
배포 대상기존 웹 서버(WAS, Web Application Server) 환경
Spring Boot 기본값기본적으로 WAR 아님 (설정 변경 필요)

WAR의 특징

  • 내장 서버가 없고, 외부 WAS(Web Application Server)에 배포해야 실행 가능
  • 기존 Tomcat, WebSphere, JBoss 등 WAS환경에서 동작해야 할 때 사용
  • 예전에는 대형 엔터프라이즈 기업에서 주로 사용했지만, 요즘은 JAR 방식이 대세
  • Spring Boot 프로젝트를 WAR로 빌드하려면 설정 변경이 필요함

  • 옵션 선택을 하고 나서 GENERATE 를 클릭한다

  • Zip 파일이 다운로드 되고 압축을 풀고 IDE에서 오픈한다.

3. Spring Boot 프로젝트 실행 방법

Spring Boot 실행 (Maven)

터미널 또는 CMD에서 프로젝트 폴더로 이동한 후 실행한다.

Maven을 사용하는 경우
./mvnw spring-boot:run

Windows에서
mvnw.cmd spring-boot:run


Spring Boot 실행 (Gradle)

MavGradleen을 사용하는 경우
./gradlew bootRun

Windows에서
gradlew.bat bootRun


Spring Boot JAR 파일로 실행 (배포용)

Maven 또는 Gradle로 JAR 파일을 빌드하여 실행할 수도 있다.

JAR 파일 빌드 Maven 사용 시

./mvnw clean package

JAR 파일 빌드 Gradle 사용 시

./gradlew clean build

빌드 후 target/ 또는 build/libs/ 폴더에 .jar 파일이 생성됨


4. 실행 확인 방법

  1. 우선 src/main/resources/application.properties에 서버 포트가 설정 되어 있는지 확인한다.

    #application.properties
    
    spring.application.name=demo
    server.port=9090
  2. ./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

5. 현재 실행 중인 Java 프로세스 검색

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

0개의 댓글