この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:T
更新日時:2026-06-11 07:10:02

タイトル: Spring BootでHello World!
SEOタイトル: Spring Boot で Hello World を作る最短手順(Initializr / Maven / 起動まで)

この記事の要点
  • Spring Initializr(start.spring.io)で雛形生成 → 依存に Spring Web を追加
  • @SpringBootApplication がメインクラス、main() 内で SpringApplication.run()
  • @RestController + @GetMapping("/") でルートに Hello World を返すエンドポイント追加
  • 起動: mvn spring-boot:run or java -jar target/*.jar。デフォルトは Embedded Tomcat ポート 8080
  • ポート変更は application.propertiesserver.port=8081
  • JDK は 17 LTS 以上を推奨(Spring Boot 3.x は Java 17 必須)

Spring Boot Hello World 全体像

Spring Boot は Spring の設定ボイラープレートを排除し、main メソッドだけで Web サーバを起動できるフレームワークです。Tomcat / Jetty / Undertow を組み込みで持ち、war ではなく実行可能 jar として配布できます。

手順 1: Spring Initializr で雛形生成

start.spring.io にアクセスして以下を選択:

項目
ProjectMaven
LanguageJava
Spring Boot3.2.x (最新安定版)
Groupcom.example
Artifactdemo
Java17
DependenciesSpring Web

「Generate」で zip がダウンロードされます。コマンドラインなら curl で:

curl https://start.spring.io/starter.zip \
    -d type=maven-project \
    -d language=java \
    -d bootVersion=3.2.0 \
    -d groupId=com.example \
    -d artifactId=demo \
    -d javaVersion=17 \
    -d dependencies=web \
    -o demo.zip

unzip demo.zip -d demo
cd demo

手順 2: pom.xml の確認

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
        <relativePath/>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <!-- Web + Embedded Tomcat -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

手順 3: メインクラス

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

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

@SpringBootApplication は次の 3 つを束ねたメタアノテーション:

  • @Configuration — このクラスを Bean 定義として認識
  • @EnableAutoConfiguration — classpath を見て自動設定(Tomcat, Jackson 等)
  • @ComponentScan — このクラスのパッケージ以下から @Component / @RestController を検出

手順 4: Hello World コントローラ

// 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;
import org.springframework.web.bind.annotation.RequestParam;

@RestController
public class HelloController {

    @GetMapping("/")
    public String hello() {
        return "Hello, World!";
    }

    @GetMapping("/greet")
    public String greet(@RequestParam(defaultValue = "World") String name) {
        return "Hello, " + name + "!";
    }
}

@RestController = @Controller + @ResponseBody。戻り値がそのままレスポンスボディ(JSON or 文字列)になります。

手順 5: 起動と動作確認

# Maven で直接起動
mvn spring-boot:run

# jar をビルドして起動
mvn clean package -DskipTests
java -jar target/demo-0.0.1-SNAPSHOT.jar

# 別ターミナルで確認
curl http://localhost:8080/
# → Hello, World!

curl "http://localhost:8080/greet?name=Taro"
# → Hello, Taro!

起動ログには定番のバナーと:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

Tomcat initialized with port 8080 (http)
Starting service [Tomcat]
Started DemoApplication in 1.234 seconds

application.properties で設定

# src/main/resources/application.properties

# ポート変更
server.port=8081

# context path
server.servlet.context-path=/api

# ログレベル
logging.level.root=INFO
logging.level.com.example.demo=DEBUG

# JSON プロパティをスネークケースに
spring.jackson.property-naming-strategy=SNAKE_CASE

JSON を返すエンドポイント

@RestController
@RequestMapping("/api")
public class ApiController {

    record Greeting(String message, String name) {}

    @GetMapping("/hello")
    public Greeting hello(@RequestParam(defaultValue = "World") String name) {
        return new Greeting("Hello", name);
    }
}

// curl http://localhost:8080/api/hello?name=Taro
// → {"message":"Hello","name":"Taro"}

FAQ

Q: 起動時にポートが使われていると言われる
A: Web server failed to start. Port 8080 was already in uselsof -i :8080 で占有プロセス確認、または server.port 変更。

Q: Embedded Tomcat を Jetty に変えたい
A: pom.xml で spring-boot-starter-web から tomcat を除外し spring-boot-starter-jetty を追加。

Q: war で配布したい
A: packaging を war に変え、メインクラスを extends SpringBootServletInitializer。ただし通常は実行可能 jar 推奨。