VSCodeでSpring Bootアプリケーションを作る
Spring Initializrで雛形生成
ここはSTSの場合と同じです。 Gradle-Groovy, Java, 3.4.1,
Group: com.nsnhnkmmkk
Artifact,Name: vscsbhello
Packagging: Jar
Java: 17
を選択。Dependenciesは適当に。 で Generate ボタンを押してできたzipをどこか空の新しいディレクトリで展開します。
ちなみに、ここではGradleを選びましたが、Mavenを選んでもVSCodeの操作自体は全く同じだと思います。

VSCodeを起動し、拡張機能をインストール
そのディレクトリで

code .

を実行し、開けたら以下2つの拡張機能をインストールします。
  • Extension Pack for Java
  • Spring Boot Extension Pack
Get started with Java Developmentと出たら、Explore your projectsを選べば良いです。
またプライベートファイアウォールで機能のいくつかがブロックされている、という表示が出ることがあるので都度許可します。

Controllerの作成
VscsbhelloApplication.javaと同じパッケージ内にHelloController.javaを作成します。
当然のことですが、コード自体はSTSで作る場合と同じです。

package com.nsnhnkmmkk.vscsbhello;

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

@RestController
public class HelloController {
    @RequestMapping("/")
    String home(@RequestParam(value = "message",required = false,defaultValue = "(none)") String message) {
        return "Hello World Spring Boot!! message=[" + message + "]";
    }
}

実行
VscsbhelloApplication.javaを開いた状態で画面右上の右向き△アイコン⇒Run Java とすると、VSCodeの画面下部にTerminalが表示され、おなじみのSpring Bootの起動が始まります。
ブラウザで
http://localhost:8080/
http://localhost:8080/?message=hello
にアクセスして動作を確認します。 実行中はVSCodeの画面上部に小さなツールバーが出るので、赤い□アイコンで停止できます。

デバッグ実行
メニューバーからRun⇒Toggle Breakpoint[F9]で選択行をブレークポイントに指定できる。 例えば

        return "Hello World Spring Boot!! message=[" + message + "]";

の行にブレークポイントを設定して、「Debug Java」で実行します。
ブラウザ操作でアクセスするとその処理で止まります。
CALL STACK内に Thread [http-nio-80800-exec-*] というものが10個ぐらいあって、 STOPPED AT BREAKPOINTと表示されているスレッドが実行しているスレッドです。
階層を辿っていくと変数などが見れます。

Jarのビルド
VSCode自身にはビルドボタンやメニューはないらしいです。 先ほどRun Javaで出現したPowerShellターミナルを使って、

cd vscsbhello
.\gradlew.bat build

でビルドできます。
BUILD SUCCESSFUL in 1m 4s
のように緑の文字で表示されればビルド成功です。
実行するには

java -jar build\libs\vscsbhello-0.0.1-SNAPSHOT.jar

ターミナルの中で実行した場合は、停止するにはCTRL+Cを押せばOKです。
なおクリーンビルドは

.\gradlew.bat clean build

依存関係のリフレッシュは

.\gradlew.bat dependencies

です。

Warのビルド
続けてWarのビルドも試してみます。ここの手順はSTSとVSCodeで全く変わることはないです。
まずbuild.gradleを編集して、以下を追記します。

plugins {
    // 中略
    id 'war'
}
bootJar {
    enabled = false
}
war {
    enabled = true
}
dependencies {
    // 中略。なお、warをfalseに戻したら↓の行も消さないとエラーになるので注意
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}

編集を保存すると「java configurationに反映するか?」という意味の英語で聞かれるのでyesと答えます。
次にVscsbhelloApplication.javaを次のように書き足します。

// package,importは省略
@SpringBootApplication
public class VscsbhelloApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        //return application;
        return application.sources(VscsbhelloApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(VscsbhelloApplication.class, args);
    }
}

これで準備はOK

.\gradlew.bat clean build

すると、 build/libs/ に
vscsbhello-0.0.1-SNAPSHOT.war
vscsbhello-0.0.1-SNAPSHOT-plain.war
という二つのファイルができます。
plainが付く物はTomcat内蔵なし、付かない物は実行可能WAR(Tomcat内蔵版)です。
これらはbuild.gradleの以下のいずれかをfalseにすることで作らないようにできます。
これらはデフォルトでは書かれていなくて、デフォルト値はtrueだと思います。

bootWar {
    enabled = true // 実行可能WAR(executable WAR)を生成
}
war {
    enabled = true // 非実行型WAR(plain WAR)を生成
}

WARを作った後の手順は省略します。
ちなみに実行可能JARと実行可能WARは、javaコマンドで実行する分には動作に違いはほとんどありません。
重要な違いは一点だけ、実行可能WARはその名の通り外部のWebアプリケーションサーバーにそのまま配備できる点です。

Java kowaza Top

(first uploaded 2025/01/04 last updated 2026/01/18, URANO398)