Spring Boot, CRUD API 개발을 위한 기록 -1- (MVC 프로젝트 생성과 의존성)

본격적인 프로젝트를 시작하기 앞서 "프로젝트 생성과 의존성"에 대해 정리를 한다.

Spring Boot, CRUD API 개발을 위한 기록 -1- (MVC 프로젝트 생성과 의존성)
Photo by Michiel Leunens / Unsplash

Spring Boot 기반으로 CRUD API 를 개발하기 위한 기록을 남기도록 한다. 일부 개념에 대한 설명은 GPT-4 를 이용해서 작성했다.

이번에는 본격적인 프로젝트를 시작하기 앞서 "프로젝트 생성과 의존성"에 대해 정리를 한다.

1. 프로젝트 생성

sample 이라는 이름으로 프로젝트를 생성 하기로 했고 빌드관리를 위해 gradle 을 선택했다.

2. 기본 의존성 추가

CRUD API 를 작성하는데 아래와 같이 기본적으로 쓰이는 의존성 라이브러리를 추가하여 프로젝트를 생성한다.

1) Spring Web

Spring Web은 Spring MVC 프레임워크에 기반하고 있으며, @Controller, @RequestMapping, @GetMapping 등의 어노테이션을 사용하여 컨트롤러 클래스와 메소드를 정의할 수 있다.

2) Spring Data JPA

Spring Data JPA는 Spring Data의 일부로, JPA 기반의 리포지토리를 쉽게 구현할 수 있게 도와주는 도구이다. JPA는 Java Persistence API의 약자로, 자바 객체와 관계형 데이터베이스 사이의 매핑을 제공하는 표준 인터페이스이며 데이터 접근 계층의 구현을 단순화하고 반복적인 코드를 줄여준다.

3) Lombok

Lombok은 자바 코드를 간소화하고 가독성을 높이는 데 도움이 되는 라이브러리다. 예를 들어, @Getter, @Setter, @Data 등의 어노테이션을 사용하면, Lombok이 자동으로 getter, setter, toString, equals, hashCode 등의 메소드를 생성해주고 반복적인 코드를 줄여준다.

프로젝트 생성 완료 화면

3. 추가 의존성 추가

build.gradle 수정 화면

IDE 로 IntelliJ를 사용하고 있는데 프로젝트 생성시 의존성 추가가 안되는 것들을 위해서 build.gradle 을 수정해서 수동으로 의존성을 추가 한다.

build.gradle 파일은 프로젝트의 종속 항목, 플러그인, 빌드 유형, 제품 버전, 빌드 변형, 매니페스트 항목, 서명 설정 등을 정의할 수 있고, 이를 통해서 의존성을 추가하였다.

1) spring-boot-starter-validation


스프링 부트에서 유효성 검사를 위한 의존성이며 도메인 객체나 컨트롤러 파라미터에 대한 유효성 검사를 수행할 수 있다. 예를 들어, @NotBlank, @NotNull, @Email 등의 어노테이션을 통해 필드에 제약 조건을 지정할 수 있음.

2) springdoc-openapi-starter-webmvc-ui


스프링 부트에서 REST API 문서를 만들기 위한 의존성이며 추가하면 스프링 부트 애플리케이션에 Swagger UI를 제공한다.

3) mariadb-java-client


MariaDB 데이터베이스와 연동하기 위한 JDBC 드라이버이며, 추후 CRUD API 구현시 MariaDB 를 사용하기 위해 추가 하도록 한다.

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.3'
    id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'
    implementation 'org.mariadb.jdbc:mariadb-java-client'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}
build.gradle

4. application.properties 설정

디비 접속을 위한 설정 정보를 application.properties 에 세팅하도록 한다.

# DB 설정
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
# spring_test database 는 미리 생성해야 한다
spring.datasource.url=jdbc:mariadb://localhost:3306/spring_test
spring.datasource.username=root
spring.datasource.password=root

# JPA 설정
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true

application.properties 에 대한 자세한 설명이 필요하면 아래 정리가 잘된 포스팅을 참고 하도록 하자

Spring Boot - Properties 사용법 정리
Spring에서 Properties는 설정 중 가장 기본적이면서 또한 가장 자주 들어오는 질문 중 하나입니다. 그래서 자주 사용하는 properties 적용 패턴을 kotlin 언어로 정리해보았습니다.