GitHub CodespacesでSpring Bootの開発を始める

手元に弱々なPCしかなくてもブラウザ上でいい感じに開発できるGitHub CodespacesでSpring Bootの開発を行う手順。
プロになるJava」をCodespecesでやるなら、という想定で書いてます。

ここからの続き
GitHub CodespacesでJava開発を始める - きしだのHatena

Spring Bootの準備

Spring Bootのプロジェクトを作りましょう。
拡張機能から、springで検索して「Spring Boot Extension Pack」をインストールします。

インストールが始まります。

Spring Bootプロジェクトの作成

左下の歯車をクリックして「コマンドパレット」をクリックします。

コマンドパレットが開きます。

「spring i」まで入力するとSpring Initializrのメニューが出るので「Create a Maven Project」を選びます。

Spring Bootのバージョンを選ぶので、一番上の「3.3.2」を選びます。

言語を選ぶので「Java」を選びます。

Group Idはそのまま「com.example」でEnterキーを押します。

Artifact Idは「tasklist」にします。

package typeは「Jar」を選びます。

Java versionには17を選びます。21を選ぶと正しく動きません。21を選ぶ場合はJDKを別途インストールする必要があります。

dependencyを選ぶ画面になります。

「web」で検索して、「Spring Web Web」となっているものを選びます。

「Selected 1 dependency」となるので、Enterキーを押します。違うものが選ばれていたら、クリックしてチェックを外してやりなおしてください。

プロジェクトを作成する場所はそのままEnterキーを押します。

エクスプローラーにtasklistも表示されています。

MAVENにも表示されています。

JAVA PROJECTに表示したいので、ブラウザをリロードして、「Import Projects」を選びます。

tasklistも表示されました。以降は、このJAVA PROJECTS内のtasklistで作業します。

Spring Bootを実行する

左のツールバーにSpring Boot Dashboardがあるので、これをクリックします。

そうすると、Spring Bootの状態が表示されます。

APPSの下のtasklistで▷を押すとSpring Bootの起動が始まります。

ターミナルにいろいろ流れていきます。

8080ポートを開くか聞かれるので、「ブラウザーで開く」をクリックします。

そうすると、ブラウザでエラーページが表示されます。まだ何も作っていないのでエラーになりますが、Spring Bootが返したエラーが表示されているので、起動が行われたことがわかります。

Spring Bootが起動すると、Spring Boot DashboardのAPPSでのtasklistのアイコンが変わります。地球ボタンを押すと、Codespaceの中でブラウザが開きます。

こちらのほうが便利ですね。

□ボタンを押すと停止します。

エンドポイントを作る

ではなにか処理を書いてみましょう。

com.example.tasklistの+ボタンを押します。

Classをクリックします。

HomeRestControllerと入力してEnterキーを押します。

次のようなコードを入力します。

package com.example.tasklist;

import java.time.LocalDateTime;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class HomeRestController {
    @RequestMapping("/resthello")
    String hello() {
        return """
                Hello.
                It works!
                現在時刻は%sです。
                """.formatted(LocalDateTime.now());
    }
}

先ほどと同様にSpring Bootを起動します。

ブラウザで開いて、resthelloをURLにつけ加えると次のように表示されます。

Spring Boot DashboardにもhomeRestControllerや/resthelloというエンドポイントが表示されています。

redirectでの注意

Controllerの戻り値に"redirect:/list"とするとリダイレクトしてくれるはずですが、CodespacesからのアクセスはSpring Bootが管理するURLとは違っているため、うまくリダイレクトができずエラーになります。

8080とポート番号がついてしまっているので、これを消してアクセスしなおしてください。