LoginSignup
3
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

VSCodeのdevcontainerでSpring Bootチュートリアル

Last updated at Posted at 2024-01-03

前提

  • Windows11 wsl2 インストール済み
  • wsl2内にdocker インストール済み
  • VSCode インストール済み

バージョン

  • VSCode 1.85.1
  • Spring Boot 3.2.1
  • Java eclipse-temurin 21
  • docker 24.0.7
  • docker compose 2.21.0

手順

作業用のフォルダを作成し、VSCodeで開く

mkdir -p ~/workspace/try_springboot3
code ~/workspace/try_springboot3

devcontainer設定

Dockerfile, compose.yml を作成する

FROM eclipse-temurin:21-jdk-jammy
compose.yml
services:
  web:
    build:
      dockerfile: Dockerfile
  • vscodeのコマンドパレット(Ctrl+Shift+P)でAdd Dev Container Configuration Filesを選択

    • "From compose.yml"を選択
    • "Select Features"は無しでOK
    • "Reopen in Container"
  • Extensionsで下記を検索して、歯車マークの"Add to devcontainer.json"を選択

    • Extension Pack for Java
    • Spring Boot Extension Pack
  • devcontainer.jsonを保存してRebuild(コマンドパレットでRebuild Container)

プロジェクト作成

  • コマンドパレットで"Spring Initializr: Create a Gradle Project"
    • Spring Boot version: 3.2.1
    • language: Java
    • group id: com.example
    • artifact id: demo
    • packaging type: Jar
    • Java version: 21
    • dependencies: Spring Web, Spring Boot Actuator
    • OK
      • demoフォルダが作成される

demoフォルダの中身をワークスペース直下に移動させる

mv demo/* demo/.[^.]* ./
rmdir demo

java.home設定

  • .vscode/settings.jsonに下記を追記
    • which java の実行結果は /opt/java/openjdk/bin/java だったので bin の上のディレクトリを指定
settings.json
"java.jdt.ls.java.home": "/opt/java/openjdk/"

アプリ修正

src/main/java/com/example/demo/DemoApplication.javaを開き、下記を追記する。アノテーションはimportしておく

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

DemoApplicationクラスに@RestControllerアノテーションをつける

@SpringBootApplication
@RestController
public class DemoApplication {

起動

VSCodeのサイドバーのSpring Boot Dashboardの APPS>demo>Run をクリック

ブラウザで http://localhost:8080/hello を開き、Hello Worldが表示されたら成功

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0