MENU

[Java 初心者学習] Spring Boot の初期設定 (Hello World まで) – 0009

Java での開発では Spring Boot を採用していることが多いです。この記事では、Spring Boot についてお伝えします。

目次

Spring Framework

Spring Boot を知る前に Spring Framework について簡単に知っておくとよいでしょう。

2000年代初頭、大規模な企業向けシステム開発 (エンタープライズ開発) では、EJB (Enterprise JavaBeans) というサン・マイクロシステムズ社が提唱した規格が標準でした。しかし、このEJBは「動かすために超重量級のサーバーが必要」「コードが複雑すぎてテストすらまともにできない」という、開発者にとっては非常に扱いづらい「悪夢」のような代物だったのです。そこに「もっと軽量で、シンプルで、テストがしやすいフレームワークを作ろう」と登場したのが Spring Framework です。

特徴

DI (Dependency Injection:依存性の注入)「オブジェクトの生成と管理を、開発者が new するのではなく、Springフレームワーク側にすべてお任せする」という仕組みです。これにより、クラス同士の結びつきが劇的に緩くなり、個別のクラスの自動テストが圧倒的に書きやすくなりました。
AOP (Aspect Oriented Programming:アスペクト指向プログラミング)本質的な業務処理とは別に、どうしても書かなければいけない「ログ出力」「データベースのトランザクション管理 (コミットやロールバック)」「セキュリティチェック」などの共通処理を、本番コードから完全に切り離して外側から合体させる仕組みです。
開発者は、アノテーションを1行書くだけで「このメソッドの開始と終了時に自動でログを出す」「エラーが起きたら自動でロールバックする」といった制御ができるようになりました。

フレームワークとは開発を簡単にする仕組みのことです。

欠点

Spring FrameworkのおかげでJava開発は非常にモダンになりました。以下のような様々な便利機能が追加されました。しかし、設定が多すぎて開発を始めるまでが面倒という問題が起きました。Spring Frameworkは柔軟すぎるがゆえに、大量のXMLファイルや設定用のJavaクラスを書く必要がありました。「Webアプリを立ち上げて画面に Hello と出すだけなのに、設定ファイルを何枚も書き、何日もかけて設定を調整しなければならない」という状態に陥ってしまったのです。

Spring MVCWebアプリを作る機能
Spring Batchバッチ処理機能
Spring Dataデータアクセス機能
Spring Security認証認可の機能

Spring Boot

Spring Boot は Spring Framework の欠点を解消したフレームワークです。

Spring Boot では Convention over Configuration と設定よりも規約を重視しています。よく使う設定の組み合わせについては Spring 側で自動設定されています。そのため、開発者側では設定ファイルに触れずに業務用のコードを書き始めることが可能です。

Spring Framework からの変化

スターター (Starter) によるライブラリの一発導入Mavenの設定に spring-boot-starter-web と1行書くだけで、Webアプリに必要な何十個ものJarファイル(Spring本体、ログライブラリ、JSON変換ツールなど)を適切なバージョンの組み合わせで自動で集めてくれます。
Tomcat(Webサーバー)の内蔵昔はEclipseでWebアプリを作ったら、別途PCにTomcatをインストールし、Eclipseと連携させて、重いwarファイルをデプロイして…という手順が必要でした。 Spring BootはJarファイルの中に最初からTomcatが組み込まれているため、普通のJavaプログラム(main メソッド)を実行する感覚で、一瞬でWebサーバーが立ち上がります。
アノテーションによる「設定ゼロ」の実現クラスの上に @SpringBootApplication や @RestController と書くだけで、一切の設定ファイルなしでWebアプリとして機能します。

Spring Boot 3.x の特徴

Spring Boot 3.x で現在でも使われている大幅バージョンアップが行われました。

Java17以降が必須
(Java 8の完全終了)
Spring Boot 3.xからは、Java8, 11 などの古いバージョンでは動きません。最低でもJava 17、そして今ならJava 21をターゲットに動かすことが前提となっています。これにより圧倒的に綺麗なコードでWebアプリが書けるようになりました。
GraalVM Native Image の本格対応
(超高速起動)
従来のJavaは「起動が遅く、メモリを大量に喰う」のが弱点で、クラウド環境では不評でした。Spring Boot 3.xからは、JavaコードをOSが直接理解できるバイナリ(ネイティブアプリ)に一発変換できる仕組みに対応しました。これにより、「起動時間0.1秒、メモリ消費量1/5」といった、かつてのJavaでは考えられなかった超軽量・超高速な動作が可能になっています。

Spring Boot での開発

Spring Boot は Jakarta EEの規格・Jakarta EE に含まれるAPIを裏側で採用しています。Spring Boot でのアプリケーションは、上記の階層で動作します。実際の Spring Boot 開発では、ブラウザ上でプロジェクトの構成を選ぶだけで、綺麗な骨組みを自動生成してくれる公式ツール Spring Initializr を使うのが世界標準です。

昔のJava開発では、Tomcat などのサーバーを用意していました。サーバソフトをPCにインストールし、それとやりとりして開発していました。現在ではその必要はありません。しかし、そういうことをしていたということは覚えておいてもよいでしょう。

それでは、実際の Spring Boot 開発の手順を簡単なサンプルを通して見ていきます。流れは以下の通りです。

  1. Spring Initializr を用いてプロジェクトの骨組みを作る
  2. Eclipse にインポート
  3. ブラウザにメッセージを返すコードを書く
  4. アプリを起動してブラウザで確認する

1. Spring Initializr を用いてプロジェクトの骨組みを作る

まず、Javaのバージョンや使いたいライブラリなどのプロジェクト構成を Spring Initializr というサイトで作っていきます。Spring Initializr (https://start.spring.io/) にアクセスし、画面上で以下の通りに入力してください。入力後、右上の ADD DEPENDENCIES をクリックすると、別ウィンドウが開きます。

Project Maven
Language Java
Spring Boot 4.0.x など
(「SNAPSHOT」や「M」と書かれていない最新の安定版)
Project Metadata 識別名
Group com.example
(Maven の groupId)
Artifact demo
Java 21

検索窓に web と入力して、Spring Web を選択します。

Spring Web が追加された後、GENERATE をクリックしてください。クリック後、demo.zip というファイルがダウンロードされます。このZIPファイルを解凍してください。解凍したフォルダは、他プロジェクトと同じところに置いておくとよいでしょう。(デスクトップに置いて開発を進めると、フォルダを後で動かそうとするときに面倒です)

2. Eclipse にインポート

Eclipse を起動してください。ファイルメニューからインポートを選択します。

開いたウィンドウから Maven – 既存 Maven プロジェクトを選択します。選択後、次へをクリックしてください。

右上の参照をクリックしてください。クリックした後、ZIPファイルを解凍したあとのフォルダを選択してください。

pom.xml にチェックが付いているのを確認し、完了をクリックしてください。クリック後、Eclipse 上でビルドが始まり、demo プロジェクトが追加されます。

ブラウザにメッセージを返すコードを書く

demo プロジェクト内にあるパッケージ (com.example.demo) を右クリックし、新規 – クラスを選択します。

名前を HelloController と入力して完了をクリックします。

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // ① このクラスがWebのURLを受け付ける窓口であることを宣言
public class HelloController {

    @GetMapping("/hello") // ② ブラウザで「/hello」にアクセスしたときにこのメソッドを動かす設定
    public String sayHello() {
        return "Hello, Modern Spring Boot 4.0.x World!"; // ③ 画面に表示される文字列
    }
}

HelloController.java を上記のように入力しましょう。

アプリを起動してブラウザで確認する

元々作成されていた DemoApplication.java を開きます。

ソースコードのところで右クリックし、実行から Java アプリケーションを選択してください。コンソール欄に画像のような表示されるはずです。

ブラウザを開き、http://localhost:8080/hello と入力してください。上記画像のように Hello world! が表示されれば成功です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次