4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

spring initializr の Dependencies に何入れる?

Last updated at Posted at 2024-02-17

はじめに

この記事は、webアプリ開発のバックエンドを構築するときに、
spring initializr の Dependencies に何を入れて始めればよいかわからない
私の悩みを解決するものです。

前提条件

やりたいこと

  • TDDをしながら、webアプリ開発を行う
  • spring initializr を使ってバックエンドを構築する

技術スタック

  • Kotlin
  • Spring Boot
  • PostgreSQL

spring initializr の Dependencies に何を入れる?

色んなプロダクトの build.gradle.kts の dependencies を眺めてみて、だいたいここら辺かなと・・・。

Spring Web

Build web, including RESTful, applications using Spring MVC.
Uses Apache Tomcat as the default embedded container.
(google翻訳)
Spring MVC を使用して、RESTful を含む Web アプリケーションを構築します。
Apache Tomcat をデフォルトの組み込みコンテナとして使用します。

Spring Data JPA

Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate.
(google翻訳)
Spring Data と Hibernate を使用した Java Persistence API で SQL ストアにデータを永続化します。

PostgreSQL Driver

A JDBC and R2DBC driver that allows Java programs to connect to a PostgreSQL database using standard, database independent Java code.
(google翻訳)
Java プログラムが標準のデータベースに依存しない Java コードを使用して PostgreSQL データベースに接続できるようにする JDBC および R2DBC ドライバー。

H2 Database

Provides a fast in-memory database that supports JDBC API and R2DBC access, with a small (2mb) footprint.
Supports embedded and server modes as well as a browser based console application.
(google翻訳)
JDBC API と R2DBC アクセスをサポートする高速なインメモリ データベースを、小さい (2MB) フットプリントで提供します。
埋め込みモードとサーバー モード、およびブラウザ ベースのコンソール アプリケーションをサポートします。

Spring Boot DevTools

Provides fast application restarts, LiveReload, and configurations for enhanced development experience.
(google翻訳)
アプリケーションの高速な再起動、LiveReload、および開発エクスペリエンスを強化するための構成を提供します。

dependencies に何が入るのか?

build.gradle.kts の dependencies に何が入るのか検証してみたいと思います。

spring initializr の Dependencies 以外の設定

  • Project: Gradle - Kotlin
  • Language: Kotlin
  • Spring Boot: 3.2.2
  • Project Metadata
    • Packaging: Jar
    • Java: 17

a. 何も入れないとき

dependencies {
  implementation("org.springframework.boot:spring-boot-starter")
  implementation("org.jetbrains.kotlin:kotlin-reflect")
  testImplementation("org.springframework.boot:spring-boot-starter-test")
}

b. Spring Web のみを入れたとき(a.と比較)

dependencies {
- implementation("org.springframework.boot:spring-boot-starter")
+ implementation("org.springframework.boot:spring-boot-starter-web")
+ implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
  implementation("org.jetbrains.kotlin:kotlin-reflect")
  testImplementation("org.springframework.boot:spring-boot-starter-test")
}

c. Spring Data JPA のみを入れたとき(a.と比較)

dependencies {
- implementation("org.springframework.boot:spring-boot-starter")
+ implementation("org.springframework.boot:spring-boot-starter-data-jpa")
  implementation("org.jetbrains.kotlin:kotlin-reflect")
  testImplementation("org.springframework.boot:spring-boot-starter-test")
}

d. PostgreSQL Driver のみを入れたとき(a.と比較)

dependencies {
  implementation("org.springframework.boot:spring-boot-starter")
  implementation("org.jetbrains.kotlin:kotlin-reflect")
+ runtimeOnly("org.postgresql:postgresql")
  testImplementation("org.springframework.boot:spring-boot-starter-test")
}

e. H2 Database のみを入れたとき(a.と比較)

dependencies {
  implementation("org.springframework.boot:spring-boot-starter")
  implementation("org.jetbrains.kotlin:kotlin-reflect")
+ runtimeOnly("com.h2database:h2")
  testImplementation("org.springframework.boot:spring-boot-starter-test")
}

f. Spring Boot DevTools(a.と比較)

dependencies {
  implementation("org.springframework.boot:spring-boot-starter")
  implementation("org.jetbrains.kotlin:kotlin-reflect")
+ developmentOnly("org.springframework.boot:spring-boot-devtools")
  testImplementation("org.springframework.boot:spring-boot-starter-test")
}

上記の検証でわかったこと

1. spring initializr の Dependencies に何も選択していなくても、
spring-boot-starterkotlin-reflectspring-boot-starter-test が入っている

2. Spring WebSpring Data JPA を入れたときに、
spring-boot-starter は入らない
[理由]
spring-boot-starter-webspring-boot-starter-data-jpa には、spring-boot-starterの機能を含んでいるから

ふ〜ん。。。

たぶんあとから追加でほしくなる

色んなプロダクトを眺めていたときに、よく使われていそうだなと感じたもの

MockK

Kotlin用のモックライブラリ

Flyway

DBのスキーマやデータのバージョン管理を行うツール

結論

spring initializr の Dependencies には

  • Spring Web
  • Spring Data JPA
  • PostgreSQL Driver
  • H2 Database
  • Spring Boot DevTools

を入れる!

テストを書いててモックが必要になったら MockK を、
DBのバージョン管理がしたくなったら Flyway を入れて開発を進めたいと思います〜!

さいごに

ここまでやる必要あったのか??と思いつつも、ずっと気になっていたことが検証できてスッキリしました🥳

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?