Spring Boot 강좌1 : Gradle, 테스트 환경, Lombok과 application.properties

coldrice99·2024년 9월 25일

1. Spring Boot의 등장

Spring Boot는 기존 Spring 프레임워크의 복잡한 설정과 의존성 관리의 어려움을 해결하기 위해 등장했다. 이로 인해 개발 생산성이 크게 향상되었고, 설정이 간편해졌다.

  • 자동 구성(Autoconfiguration): 기본 설정을 자동으로 처리하여 개발자가 설정에 신경 쓰지 않아도 된다.
  • 스타터 의존성(Starter Dependency): 필요한 기능에 맞는 의존성을 손쉽게 추가할 수 있다.
  • 내장 웹 서버: Tomcat, Jetty와 같은 웹 서버를 내장하고 있어 JAR 파일로 쉽게 실행 및 배포가 가능하다.

2. Gradle이란?

Gradle은 빌드 및 의존성 관리 도구로, Spring Boot 프로젝트에서 핵심적으로 사용된다. build.gradle 파일을 통해 프로젝트의 의존성을 손쉽게 관리할 수 있다.

예를 들어, 다음과 같은 build.gradle 파일로 의존성을 관리한다:

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

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Gradle을 통해 프로젝트의 의존성을 간편하게 추가하고 관리할 수 있다는 점이 매우 편리하다.

3. Spring Boot에서 제공하는 테스트 환경과 사용 방법

Spring Boot는 spring-boot-starter-test를 통해 JUnit 기반의 테스트 환경을 제공한다. 배운 예제 코드에서 JUnit을 사용하여 아래와 같이 테스트를 작성했다:

package com.sparta.springprepare.calculator;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

class CalculatorTest {
    @Test
    @DisplayName("더하기 테스트")
    void test1() {
        Calculator calculator = new Calculator();
        Double result = calculator.operate(8, "+", 2);
        System.out.println("result = " + result);

        Assertions.assertEquals(10, result);
    }

    @Test
    @DisplayName("나누기 테스트")
    void test2() {
        Calculator calculator = new Calculator();
        Double result = calculator.operate(8, "/", 2);
        System.out.println("result = " + result);

        Assertions.assertEquals(4, result);
    }
}

중요한 점: JUnit은 테스트 실행 환경을 자체적으로 제공하기 때문에 따로 main() 메서드를 실행하거나 서버를 시작하지 않아도 된다. 이렇게 각각의 메서드 혹은 기능별로 테스트 코드를 작성하여 실행할 수 있어, 개발과 디버깅 과정이 훨씬 간편해졌다.

4. Lombok과 application.properties

  • Lombok: 자바 코드의 반복을 줄여주는 라이브러리로, 다음과 같은 어노테이션을 사용했다:
    • @Getter / @Setter: Getter와 Setter 메서드 자동 생성
    • @AllArgsConstructor: 모든 필드에 대한 생성자 생성
    • @NoArgsConstructor: 파라미터가 없는 기본 생성자 생성
    • @RequiredArgsConstructor: final 또는 @NonNull 필드에 대한 생성자 생성

예제 코드를 포함해 application.properties에 대한 내용을 업데이트해 드리겠습니다.


application.properties: 애플리케이션의 설정을 관리하는 파일로, 다음과 같이 간단한 설정을 정의할 수 있다:

  • 프로젝트의 환경 설정, 데이터베이스 연결 정보, 서버 포트 등을 중앙에서 관리할 수 있어 유지보수에 용이하다.
  • 설정 값을 변경하면 애플리케이션을 재배포하지 않고도 환경을 변경할 수 있다.

예제 코드:

# 서버 포트 설정
server.port=8081

# 데이터베이스 설정
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

마무리

이번 학습을 통해 Spring Boot를 사용해 설정을 간소화하고 Gradle을 통해 의존성을 효율적으로 관리하는 방법을 확인했다. 또한, Lombok을 활용해 반복적인 코드를 줄일 수 있었고, application.properties로 애플리케이션 설정을 관리하는 방식을 이해했다. JUnit을 통해 별도의 실행 없이도 테스트 코드를 작성하고 검증하는 방법을 익혔다.


profile
서두르지 않으나 쉬지 않고

0개의 댓글