6.

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 の確認



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        3.2.0
        
    

    com.example
    demo
    0.0.1-SNAPSHOT

    
        17
    

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

手順 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 推奨。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. インストール(eclipseプラグイン)
  2. クイックスタート
  3. プロジェクトの作成
  4. Spring Bootプロジェクトの作成
  5. Spring Bootプロジェクトの実行
  6. Spring BootでHello World!
  7. アノテーション一覧
  8. DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
  9. DB接続設定や値の取得(JdbcTemplate編)
  10. ビューから値をモデルに格納しコントローラーで受け取る方法
  11. コントローラーにてモデルに値を格納してビューに渡す方法
  12. テンプレートエンジン
  13. ModelとModelAndViewの違い
  14. AOPの使用方法
  15. classpath: 内部ファイルの読み込み
  16. file: 外部ファイルの読み込み
  17. CSVファイルアップロード方法(Ajax)
  18. CSVファイルダウンロード方法(Ajax)
  19. Spring Bootプロジェクトのビルドと本番環境へのデプロイ方法(内部tomcat使用)
  20. Application.propertiesの環境依存設定の分割方法
  21. JPAにおけるEntityManagerの取得方法
  22. JPAにおけるjava.sql.Connectionの取得方法
  23. エラー一覧
  24. jarの引数を受け取る方法
  25. Spring BootでGmailからメール送信
  26. 複数のDBに接続する設定(Spring Boot & JPA編)
  27. ポート番号の変更
  28. Basic認証の実装と特定のURLに限定する方法
  29. Spring SecurityのBasic認証の無効化
  30. 独自のエラーページを定義する方法
  31. プロパティファイルの値やjar実行時の引数を取得する方法