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

タイトル: Spring Bootプロジェクトの実行
SEOタイトル: Spring Boot プロジェクトの実行方法(mvn / gradle / jar / IDE / プロファイル)

この記事の要点
  • Spring Boot アプリケーションの起動方法 5 種類を網羅: mvn spring-boot:run / gradle bootRun / java -jar / IDE / Docker
  • 実行時オプション: --server.port=8081--spring.profiles.active=prod--logging.level.root=DEBUG
  • デバッグ実行: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar app.jar
  • JVM チューニング: -Xms512m -Xmx2g -XX:+UseG1GC + GraalVM Native Image 対応
  • 本番運用は systemd サービス化 / Docker / Kubernetes が定番。ヘルスチェック /actuator/health 必須

Spring Boot 起動の前提

Spring Boot アプリケーションは 組み込み Tomcat (or Jetty/Undertow) 同梱の Java SE アプリです。WAR をサーバへデプロイする伝統的な方式と違い、単独 Java プロセスとして起動するのが基本。最小構成は以下のようになります:

// src/main/java/com/example/Application.java
package com.example;

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

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

方法1: Maven で起動(開発時に最も多い)

# プロジェクトルートで実行
mvn spring-boot:run

# プロファイル指定
mvn spring-boot:run -Dspring-boot.run.profiles=dev

# ポート / 起動引数
mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081 --debug"

# JVM オプション
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xmx1g -Dfile.encoding=UTF-8"

# 環境変数経由
SPRING_PROFILES_ACTIVE=dev mvn spring-boot:run

# wrapper を使う(mvn をローカル版固定)
./mvnw spring-boot:run

方法2: Gradle で起動

# bootRun タスク(spring-boot-gradle-plugin が提供)
gradle bootRun

# プロファイル
gradle bootRun --args='--spring.profiles.active=dev'

# 起動引数
gradle bootRun --args='--server.port=8081'

# wrapper
./gradlew bootRun

# build.gradle で JVM 引数固定したい場合
# bootRun {
#     jvmArgs = ['-Xmx2g', '-Dfile.encoding=UTF-8']
#     systemProperty 'spring.profiles.active', 'dev'
# }

方法3: jar をビルドして起動(本番)

これが本番デプロイの標準形です:

# パッケージング
mvn clean package -DskipTests
# → target/myapp-1.0.0.jar (Executable Jar)

# Gradle なら
gradle bootJar
# → build/libs/myapp-1.0.0.jar

# 起動
java -jar target/myapp-1.0.0.jar

# プロファイル + ポート
java -jar target/myapp-1.0.0.jar \
    --spring.profiles.active=prod \
    --server.port=8080

# JVM オプション
java -Xms512m -Xmx2g -XX:+UseG1GC \
    -Dfile.encoding=UTF-8 \
    -Duser.timezone=Asia/Tokyo \
    -jar target/myapp-1.0.0.jar

# 環境変数経由(推奨:12-Factor)
SERVER_PORT=8080 \
SPRING_PROFILES_ACTIVE=prod \
SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/app \
SPRING_DATASOURCE_PASSWORD=secret \
java -jar app.jar

方法4: IDE から起動

IntelliJ IDEA

  1. 左ツリーで @SpringBootApplication の付いたクラスを開く
  2. main メソッド左の 緑▶ をクリック → Run / Debug
  3. Run Configuration で VM options に -Xmx2g、Program arguments に --server.port=8081
  4. Active profiles 欄に dev

Eclipse / Spring Tool Suite

  1. 右クリック → Run As → Spring Boot App
  2. Run Configurations → Spring Boot タブで Profile 設定

VS Code

Extension Pack for Java + Spring Boot Extension Pack を入れると同様にできます。

方法5: Docker / docker-compose

# Dockerfile (multi-stage build)
FROM eclipse-temurin:17-jdk AS build
WORKDIR /app
COPY . .
RUN ./mvnw clean package -DskipTests

FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENV JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseContainerSupport"
ENTRYPOINT ["sh","-c","java $JAVA_OPTS -jar app.jar"]

HEALTHCHECK --interval=30s --timeout=3s --start-period=30s \
    CMD curl -f http://localhost:8080/actuator/health || exit 1
# docker-compose.yml
services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      SPRING_PROFILES_ACTIVE: prod
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/app
      SPRING_DATASOURCE_USERNAME: app
      SPRING_DATASOURCE_PASSWORD: secret
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: app
      MYSQL_USER: app
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: rootsecret

よく使う起動オプション

目的オプション
ポート変更--server.port--server.port=8081
プロファイル切替--spring.profiles.active--spring.profiles.active=prod,k8s
外部設定--spring.config.location--spring.config.location=file:./conf/
ログレベル--logging.level.--logging.level.org.springframework=DEBUG
バナー非表示--spring.main.banner-mode--spring.main.banner-mode=off
DB 接続--spring.datasource.url--spring.datasource.url=jdbc:mysql://...

リモートデバッグ起動

# JDWP を待ち受け(5005 番ポート)
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \
     -jar target/myapp.jar

# Maven
mvn spring-boot:run \
  -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"

# IntelliJ の Remote JVM Debug 設定でホスト localhost, ポート 5005 にアタッチ

本番運用: systemd サービス化

# /etc/systemd/system/myapp.service
[Unit]
Description=My Spring Boot App
After=network.target

[Service]
Type=simple
User=app
Group=app
WorkingDirectory=/opt/myapp
ExecStart=/usr/lib/jvm/java-17-openjdk/bin/java \
    -Xms512m -Xmx2g \
    -Dfile.encoding=UTF-8 \
    -Duser.timezone=Asia/Tokyo \
    -jar /opt/myapp/app.jar \
    --spring.profiles.active=prod
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myapp
sudo journalctl -u myapp -f

ヘルスチェック (Spring Boot Actuator)



    org.springframework.boot
    spring-boot-starter-actuator
# application.yml
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,prometheus
  endpoint:
    health:
      show-details: when-authorized
  health:
    db.enabled: true
    diskspace.enabled: true
# 起動確認
curl http://localhost:8080/actuator/health
# {"status":"UP","components":{"db":{"status":"UP"},"diskSpace":{"status":"UP"}}}

# Prometheus メトリクス
curl http://localhost:8080/actuator/prometheus

FAQ

Q: 起動はするが「Whitelabel Error Page」しか出ない
A: コントローラの @RequestMapping パスが間違っているか、コンポーネントスキャン対象外。Application クラスをパッケージのルートに置いてください。

Q: ポート 8080 が使用中で起動失敗
A: lsof -i:8080(macOS/Linux)or netstat -ano | findstr 8080(Windows)で占有プロセス特定。または --server.port=0 でランダムポート割当。

Q: native image でビルドしたい
A: GraalVM + spring-boot-starter-parent 3.0+mvn -Pnative native:compile。起動時間が 50ms 程度になります。