2 분 소요

본 포스트는 Java 17과 IntelliJ를 활용하였고, MAC OS에서 실행한다. 또한 관련 자료는 김영한의 스프링 강의를 토대로 공부하여다.

스프링 프로젝트 환경 설정

프로젝트 생성

예전과 다르게 요즘에는 Spring Boot 프로젝트를 매우 간편하게 시작할 수 있도록 https://start.spring.io라는 공식 사이트가 제공되고 있다.

주요 특징으로는 프로젝트 타입 선택, 언어, Spring Boot 버전, Dependencies, 메타데이터, 자동 압축다운로드등이 있다.

아래는 하나의 예시이다.

스프링 이미지

  • 필수 환경 : Java 17 이상

  • 주의 사항

    • 스프링 부트 2.x는 더 이상 사용 불가
    • javax → jakarta 패키지로 변경 필요
    • H2 데이터베이스: 2.1.214 이상 사용 권장

Gradle 과 Maven 차이점

DSL 타입 : Gradle 은 Groovy / Kotlin 기반, Maven은 고정된 XML 구조

성능 : Gradle이 Maven 보다 훨씬 빠름

사용 방식 : Gradle이 DSL에 익숙해야하기에 학습하기 어렵지만 점점 널리 사용되는 추세, Maven은 구조가 명확해 초보자도 익히기 쉽고 전통적이고 널리 사용되는 방식이다.

Gradle 설정 예시 (build.gradle)

plugins {
    id 'org.springframework.boot' version '2.3.1.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

test {
    useJUnitPlatform()
}

앞서 나온 spring.io 사이트에서 압축 폴더로 다운을 받고 이를 실행하면 다음과 같은 build.gradle 코드가 나온다.

위의 코드는 Spring Boot 프로젝트에서 Gradle로 빌드 설정하는 기본 코드이다.

  • 구성 요소 요약

    • plugins: 사용할 플러그인 (스프링 부트, 의존성 관리, 자바)

    • group, version: 프로젝트 이름과 버전

    • sourceCompatibility: 사용할 자바 버전 (여기선 11)

    • repositories: 라이브러리를 받을 곳 (보통 mavenCentral)

    • dependencies: 사용할 라이브러리들
      • spring-boot-starter-web: 웹 기능
      • spring-boot-starter-thymeleaf: HTML 템플릿
      • spring-boot-starter-test: 테스트 도구
    • test: 테스트 설정 (JUnit 5 사용)

실행 환경 설정

또한 Intellij에서 스프링 부트를 활용할 때 http://localhost:8080 접속으로 동작 확인이 가능하다.

  • Gradle 대신에서 Intellij 직접 실행 설정을 권장한다.
  • 실행 설정 하는 방법 : Preferences → Build Tools → Gradle → IntelliJ IDEA

  • Java 17 이상 : JDK 17 이상 설정 필요
  • 프로젝트 JDK 및 Gradle JVM 모두 설정 확인

주요 라이브러리

Gradle은 의존관계가 있는 라이브러리를 함께 다운을 한다.

지금은 간단하게 Spring Web, thymeleaf만 의존성 주입을 해서 간단한 예시만 설명하고 다음에 더 자세하게 다루도록 하겠다.

스프링 부트 라이브러리

  • spring-boot-starter-web
    • spring-boot-starter-tomcat : 톰캣 (웹서버)
    • spring-webmvc : 스프링 웹 MVC
  • spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진 (View)
  • spring-boot-starter-logging (logback, slf4j 포함)
  • spring-webmvc, spring-core 등

테스트 라이브러리

  • spring-boot-starter-test
  • junit, mockito, assertj, spring-test

View 환경설정

Welcome Page

  • Spring Boot는 특정 경로에 index.html이 있으면 이를 기본 루트 페이지 http://localhost:8080/로 자동 연결해주는 기능을 제공한다.

  • 파일의 경로는 다음과 같다.

    • resources/static/index.html

    • Static 폴더 : 정적 리소스 (HTML, CSS, JS)를 제공하는 공간

  • 또한 resources/templates 폴더에도 html파일을 넣음으로써 thymeleaf 연동이 가능하다.

빌드 및 실행

먼저 명령어를 보도록 하겠다. (MAC 버전)

./gradlew build
cd build/libs
java -jar hello-spring-0.0.1-SNAPSHOT.jar

이 명령어들의 사용

  • 주로 IDE의 터미널 또는 명령 프롬프트 (콘솔창)에서 사용된다.
  • 주로 Spring Boot 프로젝트를 실행하거나 배포할 때 사용된다.
  • Gradle을 사용하는 프로젝트에서는 프로그램을 빌드 (컴파일하고 패키징)을 우선 한다.
    • 그 이후 .jar파일을 만들고, 그 파일을 통해 애플리케이션을 실행한다.

한 줄씩 설명

/gradlew build: 프로젝트를 빌드하는 명령어

  • Gradle Wrapper로, Gradle이 설치되어 있지 않아도 사용 가능하게 해준다.

  • build : 코드를 컴파일, 테스트 실행한다.

    build/libs/폴더.jar파일을 생성한다.

    • 실행 위치 : 프로젝트의 최상위 폴더

cd build/libs: 빌드 결과물이 있는 (jar파일이 저장된 디렉터리) 곳으로 이동한다.

java -jar hello-spring-0.0.1-SNAPSHOT.jar: 생성된 .jar파일을 실행하는 명령어이다.


다음 포스트는 스프링의 웹 개발 기초 과정에 대한 과정을 설명하도록 하겠다.