nikkie-ftnextの日記

イベントレポートや読書メモを発信

『プロになるJava』21章に沿って、Spring Boot製のWebアプリケーションをIntelliJ IDEAでもコマンドラインでも起動する #projava

はじめに

(今年も1暑すぎましゅ...... nikkieでしゅ...

夏が来るのに抵抗すべく、JavaのSpring2を触っていきます。

目次

JavaのWebアプリケーションを知りたい

先日触ったTomcatも、裏にあるのはこの動機です。

Tomcatのドキュメントを読んでいたところ、「Servlet」「JSP」「Jakarta EE」といった語が出てきて、なかなか理解が進みません。
そんなときにふと『プロになるJava』の存在を思い出します3

この本の21章・22章がWebアプリケーション開発に取り組む章でした。
そこで、一読するとともに、Spring BootのWebアプリケーションの起動に絞って手を動かしました。

なお、書籍で取り組むWebアプリのソースコードは公開されています。

Spring BootのWebアプリケーションを起動する

Spring Initializrでプロジェクトを作成

めちゃ便利なツールを知りました!
https://start.spring.io/

設定値を入力すると、プロジェクトの雛形がZIPでダウンロードできます(設定値は書籍をどうぞ)

これをIntelliJ IDEAでプロジェクトとして開いて開発しました。
私の環境はJava 20なので、pom.xmlの以下だけ変えています。

<properties>
-    <java.version>17</java.version>
+    <java.version>20</java.version>
</properties>

IntelliJ IDEAでWebアプリケーションを起動

IntelliJ IDEA 2024.1.3 (Community Edition)
Build #IC-241.17890.1, built on June 4, 2024

IntelliJ IDEAで2箇所設定します

  • Project Structure: JDKの指定
  • Edit Configurations(実行構成
    • type: Application
    • 「Build and run」にTaskListApplicationを指定

IntelliJ IDEAは初見ではないのですが、私には不慣れなツールです。
書籍にはスクリーンショットが豊富にあり、ほとんど迷子にならずに設定できました。

この状態でConfigurationを実行すると、(Spring Bootに含まれている)Tomcatが起動
http://localhost:8080

書籍では http://localhost:8080/resthello のエンドポイントを追加します

コマンドラインからもWebアプリケーションを起動

今回のプロジェクトはMavenを使う設定です4
Mavenでビルドしたjarファイルをコマンドラインで実行してアプリケーション起動も(書籍に沿って)やってみました。

  • IntelliJ IDEAでMavenを操作(右の方にはMavenのメニューがあるのか)
    • packageを実行して、targetディレクトリ下にjarファイルを作る
    • mvnコマンドも確認できる(コマンドは長かったのでUI操作はありがたい)
  • java -jar tasklist-0.0.1-SNAPSHOT.jar

/resthello は同様に動きました!

『プロになるJava』がすごい(21章感想)

これはマジで「最高の指南書」ですわ👏
Javaの開発は全然やったことがないけれど、PythonではWebアプリの開発経験がある立場からの感想です

  • JavaのWebアプリフレームワーク整理された(「Servlet」「JSP」「Jakarta EE」分からないものがたくさんあった身には福音)
  • Spring Bootってなんなのか完全理解(Spring Frameworkとの違いが分かってなかった)
  • CSSSQLは解説しないけれど、続く22章も込みでタスク管理アプリが一通り作れる

先の本としてはこちらになるんですかね?

終わりに

JavaのWebアプリケーションを知りたい」は、今回触ったSpring Bootを知りにいけばよさそうと分かりました。
Spring BootはTomcatが付属しているという関係なんですね。

Tomcatから触り始めた時点と比べると、アプリケーションを作れそうな方向に大きく近づいた感覚です!
ありがとう、『プロになるJava


  1. この記事ぶりの暑すぎましゅ
  2. 名前はなんとから来ているらしいです! Spring represented a fresh start after the “winter” of traditional J2EE バネでも泉でもなかった...
  3. よい本です!
  4. 過去のMaven素振り