2026年5月21日木曜日

macOS + VSCode で SpringBoot を試す

macOS + VSCode で SpringBoot を試す

概要

VSCode を使ってコーディングできる環境を構築しアプリをビルドし動作確認する環境まで構築します

環境

  • macOS 26.4.1
  • openjdk 26.0.1
  • gradle 9.5.1
  • VSCode 1.121.0

準備

  • brew install openjdk
  • sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
  • brew install gradle

Spring Initializr を使ってプロジェクトを作成

https://start.spring.io/ でプロジェクトの雛形を作成します

  • Project -> Gradle - Groovy
  • Language -> Java
  • Spring Boot -> 4.0.6
  • Dependencies -> Spring Web
  • Java -> 26

で Generate すると demo.zip がダウンロードできます

demo.zip を展開し VSCode で開く

展開してできた demo フォルダを VSCode で開きましょう
拡張は以下をインストールします

  • Extension Pack for Java
  • Spring Boot Extension Pack

サンプルアプリケーション

demo 内にすでに src/main/java/com/example/demo/DemoApplication.java がありますが削除して新しいアプリを作成します

まずはコントローラを作成します
/ にアクセスしたら簡単なメッセージを返却するコントローラを作成します

  • vim src/main/java/com/example/demo/HelloController.java
package com.example.demo;

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

@RestController
public class HelloController {

  @GetMapping("/")
  public String index() {
    return "Greetings from Spring Boot!";
  }

}

次にコントローラを使用するアプリケーションを追加します
これがいわゆるメインファイルになります

  • vim src/main/java/com/example/demo/Application.java
package com.example.demo;

import java.util.Arrays;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

  @Bean
  public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    return args -> {

      System.out.println("Let's inspect the beans provided by Spring Boot:");

      String[] beanNames = ctx.getBeanDefinitionNames();
      Arrays.sort(beanNames);
      for (String beanName : beanNames) {
        System.out.println(beanName);
      }

    };
  }

}

アプリ起動

ローカルでアプリを起動します

  • ./gradlew bootRun

各種必要な jar のダウンロードなどが始まります
基本的には ~/.gradle/ にダウンロードされます

最終的に EXECUTING になれば起動しています

動作確認

  • curl http://localhost:8080
Greetings from Spring Boot

ユニットテストを追加する

ユニットテストも追加してみます
まずはテスト用のライブラリを追加します

testImplementation の行を追加しましょう
あれば追加不要です

  • vim build.gradle
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-webmvc'
	testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

src/test/java/com/example/demo/DemoApplicationTests.java がありますが削除して OK です
新たに以下を追加します

  • src/test/java/com/example/demo/HelloControllerTest.java
package com.example.demo;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;

@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {

  @Autowired
  private MockMvc mvc;

  @Test
  public void getHello() throws Exception {
    mvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
        .andExpect(status().isOk())
        .andExpect(content().string(equalTo("Greetings from Spring Boot!")));
  }
}

あとはテストを実行します

  • ./gradlew tasks

でタスクを確認し test タスクを実行します

  • ./gradlew test
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

BUILD SUCCESSFUL in 4s
4 actionable tasks: 2 executed, 2 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.4.1/userguide/configuration_cache_enabling.html

最後に

macOS + VSCode で Spring Boot を試してみました
まだ簡単なアプリを起動しただけなので次回はデータベースと連携してみたいと思います

後片付け

  • rm -rf ~/.gradle/
  • VSCode 拡張の削除
  • demo フォルダの削除
  • brew uninstall openjdk
  • brew uninstall gradle

参考サイト

0 件のコメント:

コメントを投稿