Backend/Spring Framework

Spring boot 프로젝트 세팅 (의존성)

Dfree 2025. 6. 23. 16:06

의존성이란?

1. compile 시점의 의존성 : 프로젝트를 컴파일 할 때 마다 사용됨

= 해당 라이브러리의 API를 사용할 수 있음

2. runtime 시점의 의존성 : 어플리케이션을 실행할 때 사용됨

 = 실행 시에도 라이브러리가 필요함

3. 은닉성 : implementation 으로 추가된 의존성은 다른 프로젝트 모듈에서 직접 접근 불가능. 모듈간의 캡슐화 도와줌

 

의존성 옵션 (build.gradle > dependencies)

implementation 옵션

  • 직접적인 의존성을 추가할 때 사용
  • 특정 라이브러리나 모듈이 프로젝트 컴파일 시 필요하지만, 해당 라이브러리가 프로젝트 외부로 공개될 필요가 없다는 것을 의미

runtimeOnly 옵션

  • compile 시점에는 필요없고 runtime 시점에만 필요한 라이브러리를 추가할 때 사용
  • 대표적으로는 Logging 관련 라이브러리, DB 관련 라이브러리 등이 있음

testImplementation 옵션

  • 테스트 코드를 수행할 때 적용할 라이브러리를 추가할 때 사용
  • 테스트 용도로만 라이브러리나 빌트인 DB 를 사용하고 싶다면 해당 옵션 사용

 

 

종류

implementation 

spring-boot-starter-jdbc

스프링 부트 어플리케이션에서 JDBC를 사용하기 위한 모든 필수 의존성 포함하는 라이브러리

JDBC API를 통해 데이터베이스와의 연결 및 SQL 쿼리 실행을 쉽게 할 수 있도록 도와줌

spring-boot-starter-web

어플리케이션이 종료되지 않고 웹 서버를 띄울 수 있도록 도와줌

mybatis-spring-boot-starter

스프링 부트 환경에서 MyBatis 를 쉽게 통합하고 사용할 수 있도록 도와줌

MyBatis는 SQL 매핑 프레임워크 - 개발자가 SQL문을 XML혹은 어노테이션을 통해 관리할 수 있게 해줌

DAO, Mapper 클래스에 쿼리 파일을 매핑 시켜주는 역할

spring-boot-starter-data-jpa

JPA(Java Persistence API)를 사용해 관계형 데이터베이스를 객체 지향적으로 다룰 수 있게 해줌

Hibernate와 같은 JPA 구현체를 자동으로 설정

리포지터리 디자인 패턴의 구현을 쉽게 해줌

querydsl-jpa

QueryDSL - 타입 안전한 쿼리를 지원하는 프레임워크, 복잡한 쿼리 작성을 보다 쉽고 안전하게 할 수 있음

JPA 와 함께 사용될 때, 엔티티 객체에 대한 동적 쿼리 생성을 용이하게 해줌

 

runtimeOnly

h2database:h2

h2는 자바 기반의 인메모리 데이터베이스, 로컬 개발 및 테스트 환경에서 DB 서버를 별도로 구축하지 않고 사용할 수 있게 해 줌

빠르고 경량이며 설정이 간단함

 

 

 

< 프로젝트 세팅 >

JDBC

# build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    runtimeOnly 'com.h2database:h2'
}

 

JDBC Template

# build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    runtimeOnly 'com.h2database:h2'
}

 

QueryMapper

# build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
    runtimeOnly 'com.h2database:h2'
}

 

QueryFileMapper

# build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
    runtimeOnly 'com.h2database:h2'
}

 

JPA

dependencies {
    // PostgreSQL 의존성 추가
    implementation 'org.postgresql:postgresql:42.2.27'

    // 4. SpringBoot 의존성 추가
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'

    // JUNIT 테스트를 위한 기본 의존성
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'

    // 5. JDBC Template 등.. Spring 의존성을 받기위한 의존성
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // 6. MyBatis 실습을 위한 의존성
    testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.0'
    testCompileClasspath 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.1'
    runtimeOnly 'org.postgresql:postgresql'

    // 7. 개발편의를 위한 Lombok 의존성 추가
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    // 8. RawJPA 적용을 위한 의존성
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    // 9. QueryDSL 적용을 위한 의존성 (SpringBoot3.0 부터는 jakarta 사용해야함)
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"

    // H2는 자바 기반의 인메모리 데이터베이스로,
    // 로컬 개발 및 테스트 환경에서 DB 서버를 별도로 구축하지 않고 사용할 수 있게 해 줍니다.
    // 빠르고 경량이며 설정이 간단하다는 장점이 있습니다.
    runtimeOnly 'com.h2database:h2'

    // 10. FixtureMonkey 적용을 위한 의존성
    testImplementation 'com.navercorp.fixturemonkey:fixture-monkey-starter:1.0.19'
}