| この記事の要点 |
|---|
|
Spring Bootにおける本番やステージングのDB接続情報等の違いをどう分割すればよいか記載します。
application.propertiesの分割
基本的にapplication.propertiesに設定情報を記載しますが、以下の本番とステージング用のファイルを更に作成します。
・application.properties (元からある設定ファイル 本番とステージングで共通の設定を記述する)
・application-production.properties (本番用のファイル)
・application-staging.properties (ステージング用のファイル)
Eclipse(STS)での実行方法
以下の画像は2019年当時のSTS画面です。現在の版でラベルや配置が異なる場合は、Spring Bootアプリを起動する設定のプロファイル・環境変数・プログラム引数を確認してください。画像と当時の操作は残しています。
実行時に本番かステージングかを選択する必要があります。
Eclipseタブの「Run」→ 「Run Configurations...」を選択します。
「Spring Boot App」配下のプロジェクト名を選択して以下の画面を開きましょう。

profileに環境名を指定することで、アプリ起動時に指定した環境で起動します。
Eclipse(STS)でのビルド方法
※以下、mavenの例です。
同じく「Run Configurations...」の「Maven Build」において対象のプロジェクト名を指定します。
「Environment」に「SPRING_PROFILES_ACTIVE」を「staging」で設定します。

この環境変数は、そのMavenプロセスから起動するSpring Bootアプリやテストに渡る場合があります。しかし通常のpackageだけで、完成したJARの実行プロファイルがstagingに固定されるわけではありません。Mavenの-Pで選ぶビルドプロファイル、リソースフィルタリング、テストやspring-boot:runなどの実行内容は別に確認します。
jarファイルの実行時
jarファイルを実行する場合は以下のパラメータを指定することで環境を指定することができます。
|
java -jar sample.jar --spring.profiles.active=staging |
同じJARを実行設定で切り替える
通常は共通設定と環境別設定を含む同じ成果物を使い、起動時に有効なSpringプロファイルを指定します。Mavenプロファイルを使ってファイルを除外・置換する独自ビルドもあるため、自分のpom.xmlも確認してください。ここではSpring Boot 3.5.6 / Java 21の小さな独立例を検証しました。全Boot版・実システムのDB接続を検証したという意味ではありません。
src/main/resources/application.properties
spring.application.name=profile-check
spring.main.banner-mode=off
logging.level.root=OFF
demo.label=common
demo.shared=shared-valuesrc/main/resources/application-staging.properties
demo.label=stagingsrc/main/resources/application-production.properties
demo.label=productiondemo.labelとdemo.sharedは説明用のダミー値です。stagingを有効にするとlabelはstagingへ上書きされ、sharedは共通値のままです。productionは自動で本番と認識される特別な名前ではなく、ファイル名と指定したプロファイル名を対応させます。
起動する例
以下のprofile-check.jarは検証用JARです。元記事のsample.jarは実際の成果物名へ読み替えてください。
java -jar target/profile-check.jar --spring.profiles.active=staging
java -jar target/profile-check.jar --spring.profiles.active=production上は別々の起動例です。環境変数SPRING_PROFILES_ACTIVE=productionでも指定できます。通常の設定優先順位ではコマンドラインが環境変数より優先されるので、両方に違う値を書かないよう管理してください。デフォルト設定やプログラムによる変更があるアプリでは、その実装も確認します。
有効な設定を安全に確認する
次の独立検証アプリは、アクティブなプロファイル名とダミー値だけを表示します。実システムの設定全体・DBパスワード・トークンをログへ出す例ではありません。
package example;
import java.util.Arrays;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProfileCheck {
public static void main(String[] args) {
var application = new SpringApplication(ProfileCheck.class);
application.setWebApplicationType(WebApplicationType.NONE);
try (var context = application.run(args)) {
var environment = context.getEnvironment();
System.out.println("active=" + Arrays.toString(environment.getActiveProfiles()));
System.out.println("label=" + environment.getProperty("demo.label"));
System.out.println("shared=" + environment.getProperty("demo.shared"));
}
}
}staging指定時の出力は次のとおりです。
active=[staging]
label=staging
shared=shared-value今回確認した起動結果
| 起動条件 | 結果 |
|---|---|
| 指定なし | 明示的activeは空、label=common。productionへ自動選択されない |
| 引数staging | active=staging、label=staging |
| 環境変数production | active=production、label=production |
| 環境変数production + 引数staging | 引数が優先されstaging |
| staging + 引数demo.label=cli | label=cli。プロファイルファイルより引数が優先 |
| 引数staging,production | 両方有効、同じキーのlabelは後のproduction |
検証JARはビルド時の環境変数をstagingにして作成し、その同じJARを上記6条件で起動しました。3設定ファイルが元の内容でJARに含まれることと、起動前後でJARのSHA256が変わらないことも確認しています。Mavenでのpackage成功だけを実行プロファイル確認の代わりにしません。
運用時の注意
- DBのパスワードやAPIキーはGitに直書きせず、運用の秘密情報管理から渡す。環境別に分けただけで安全にはならない。
- 環境変数は実際にアプリを起動するプロセスへ渡す。ビルド用ターミナルとサービス起動環境は別の場合がある。
- Spring Boot 3.5のspring.profiles.activeは共通設定など非プロファイル固有の文書に指定する。application-staging.properties自身へ別プロファイルの有効化を書かない。
- 複数プロファイル・外部設定ファイル・コマンドラインが競合したら、実際の有効プロファイルと秘密でない設定値だけを確認する。
- DBを切り替える前に接続先とデータ操作の影響を検証環境で確認する。起動成功だけで本番DBの安全性を保証しない。
STS全体の操作、Mavenの独自リソース処理、実DB接続は未検証です。公式資料: Spring Boot 3.5のプロファイル、外部設定と優先順位(2026年10月確認)。
子ページはありません
- インストール(eclipseプラグイン)
- クイックスタート
- プロジェクトの作成
- Spring Bootプロジェクトの作成
- Spring Bootプロジェクトの実行
- Spring BootでHello World!
- アノテーション一覧
- DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
- DB接続設定や値の取得(JdbcTemplate編)
- ビューから値をモデルに格納しコントローラーで受け取る方法
- コントローラーにてモデルに値を格納してビューに渡す方法
- テンプレートエンジン
- ModelとModelAndViewの違い
- AOPの使用方法
- classpath: 内部ファイルの読み込み
- file: 外部ファイルの読み込み
- CSVファイルアップロード方法(Ajax)
- CSVファイルダウンロード方法(Ajax)
- Spring Bootプロジェクトのビルドと本番環境へのデプロイ方法(内部tomcat使用)
- Application.propertiesの環境依存設定の分割方法
- JPAにおけるEntityManagerの取得方法
- JPAにおけるjava.sql.Connectionの取得方法
- エラー一覧
- jarの引数を受け取る方法
- Spring BootでGmailからメール送信
- 複数のDBに接続する設定(Spring Boot & JPA編)
- ポート番号の変更
- Basic認証の実装と特定のURLに限定する方法
- Spring SecurityのBasic認証の無効化
- 独自のエラーページを定義する方法
- プロパティファイルの値やjar実行時の引数を取得する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38