Closed13

Java で Spring Boot を使って Web サーバーを作る

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

このスクラップについて

現在、Box(企業向けクラウドストレージサービス)API の Java SDK のキャッチアップをしている。

キャッチアップの内容は下記のスクラップに投稿している。

https://zenn.dev/tatsuyasusukida/scraps/0293205105d96c

OAuth 2.0 によるユーザー認証を試すために Java で Web サーバーを作る必要が生じた。

上記のスクラップに書き込んでも良かったが別のスクラップに分けた方が良さそうだったのでこのスクラップを作成した次第である。

Spring Boot は以前にも試したことがあり、その時は Java ではなくサーバーサイド Kotlin を使用した。

https://zenn.dev/tatsuyasusukida/scraps/93139f246e2eb2

このスクラップでは Java を使って Spring Boot で簡単な Web サーバーを作ってみようと思う。

やりたいことは承認コード(認可コード)とアクセストークンを交換するだけなので短いスクラップになりそう。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ドキュメント選び

https://spring.pleiades.io/spring-boot/docs/current/reference/html/getting-started.html

https://spring.io/quickstart

https://spring.io/guides/gs/spring-boot/

1 番目は日本語だがなんか違う気がする。

2 番目は Spring Boot というか Spring のクイックスタートだが実際には Spring Boot を扱っている、内容はシンプルで短い。

3 番目は Spring Boot の Getting Started で内容は詳細で長い。

とりあえず 2 番目から始めてみてダメだったら 3 番目を試してみよう。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ワークスペース作成

コマンド
mkdir -p ~/workspace/java/hello-spring-boot
cd ~/workspace/java/hello-spring-boot

ダウンロードした zip ファイルをワークスペースのディレクトリ直下に移動して展開したら demo というディレクトリが作成された。

ディレクトリなしで直接展開されるイメージだったが、Spring Initializr の Web UI を使った場合はディレクトリありで展開されるのかな?

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

IntelliJ IDEA 起動

IntelliJ IDEA でワークスペースを開く。

とりあえず Ctrl + R を押すなどしてアプリが起動できるかを確認する。

http://localhost:8080/ にアクセスすると正常にエラーページが表示された。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

コーディング

src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication 
@RestController // 忘れがちなので注意
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("Hello %s!", name);
    }
}

コーディングが終わったら Ctrl + R を押してサーバーを再起動する。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

終わってしまった

びっくりするくらいスムーズに簡単に終わってしまった。

Spring Boot は TypeScript の NestJS に似ているのでとっつきやすくてありがたい。

今まで Java を避けてたけどこんなに簡単に Web アプリを作れるのであれば魅力的に感じる。

IntelliJ IDEA のコーディング支援が素晴らしい、当り前だが Java は TypeScript よりも厳密に型をつけなければいけないのでその分コード補完の効きが良い。

Kotlin を使えば Java に比べてシンプルば書き方もできる。

様々な事情で Java を使わなければいけない仕事もあるし、単に Java と聞いただけで安心するお客さんもいそう(笑)

今後も機会を作って Spring Boot の勉強を続けたいと思う。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

まとめ

  • Spring Boot は Spring をベースにした Web アプリ開発フレームワーク。
  • プロジェクトを作成するには srping initializr を使用する。
  • プロジェクトを作成する際には Spring Web を依存関係に追加する必要がある。
  • プロジェクト zip はディレクトリ付きで展開される。
  • ダウンロードしたプロジェクトは手を加えなくてもすぐに実行できる。
  • エンドポイントを作成するにはメソッドに GetMapping などのアノテーションを使用する。
  • クエリ文字列などのリクエストに関するデータは RequestParam などでアノテーションした引数から取得できる。
  • メソッドの戻り値がそのままリクエストボディとなる。
このスクラップは2023/04/19にクローズされました