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

coldrice99·2024년 9월 25일
0

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개의 댓글