Spring Bootの設定ファイルを環境別に分ける方法!初心者でもわかるapplication-dev.ymlとapplication-prod.ymlの使い方
生徒
「Spring Bootって、開発環境と本番環境で設定を分けることってできますか?」
先生
「もちろんできますよ。application.ymlファイルを環境ごとに分けて管理するのが一般的です。」
生徒
「どんなふうにファイルを分けたらいいんですか?それに、どうやって切り替えるんですか?」
先生
「では、application-dev.ymlやapplication-prod.ymlなどのプロファイルごとの設定ファイルについて、わかりやすく解説していきましょう!」
1. Spring Bootの設定ファイルとは
「1. Spring Bootの設定ファイルとは」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
Spring Bootでは、アプリケーションの設定をapplication.ymlやapplication.propertiesというファイルに記述します。これらのファイルには、データベースの接続情報やポート番号、ログ出力のレベルなどを定義します。
初心者の方が最初につまずきやすいのが、開発環境・本番環境・テスト環境など、異なる設定をどうやって管理するかという点です。ここで役立つのが「プロファイル機能」と「設定ファイルの分割」です。
2. プロファイルによる環境別設定の基本
Spring Bootでは「プロファイル(profile)」という仕組みを使って、環境ごとに設定を切り替えることができます。
たとえば、開発環境なら「dev」、本番環境なら「prod」、テスト環境なら「test」というようにプロファイルを指定して、適切な設定ファイルを読み込ませます。
3. application-dev.ymlとapplication-prod.ymlの使い分け
実際には、以下のように複数のYAMLファイルを用意して環境ごとに分けます。
src/
└── main/
└── resources/
├── application.yml
├── application-dev.yml
└── application-prod.yml
application.ymlは共通の設定を書くファイルです。そして、プロファイルごとに個別の設定をapplication-xxx.ymlに記述します。
4. 実際の設定例を見てみよう
「4. 実際の設定例を見てみよう」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
まずは共通設定ファイルapplication.ymlの例です。
spring:
profiles:
active: dev
この設定により、application-dev.ymlが読み込まれるようになります。
次に、開発用のapplication-dev.ymlの例を見てみましょう。
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev_user
password: dev_pass
続いて、本番用のapplication-prod.ymlの例です。
server:
port: 80
spring:
datasource:
url: jdbc:mysql://prod-server:3306/prod_db
username: prod_user
password: prod_pass
5. プロファイルの切り替え方法
プロファイルの切り替えにはいくつかの方法があります。代表的なのは、application.yml内でspring.profiles.activeを設定する方法です。
また、コマンドラインからSpring Bootを起動する際に指定することもできます。
java -jar myapp.jar --spring.profiles.active=prod
これにより、起動時にapplication-prod.ymlが使用されます。
6. 開発現場でよくあるパターン
多くの現場では、次のようなパターンで設定を分けています:
application.yml→ 共通設定application-dev.yml→ 開発用application-test.yml→ テスト用application-prod.yml→ 本番用
これにより、開発者が自分のローカル環境で安全に開発でき、本番環境では本番用のデータベースやサービスを利用することができます。
7. IntelliJでプロファイルを切り替える方法
「7. IntelliJでプロファイルを切り替える方法」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
IntelliJ IDEAを使っている場合、Run/Debug ConfigurationsからVMオプションに以下を指定することでプロファイルを切り替えることができます。
-Dspring.profiles.active=prod
これにより、実行環境ごとの切り替えが簡単になります。
8. プロファイルごとのBean定義も可能
さらに高度な使い方として、Javaクラス内でプロファイルごとにBeanを分けて定義することも可能です。
@Configuration
public class DataSourceConfig {
@Bean
@Profile("dev")
public DataSource devDataSource() {
// 開発用DataSourceの設定
}
@Bean
@Profile("prod")
public DataSource prodDataSource() {
// 本番用DataSourceの設定
}
}
このようにすることで、設定ファイルだけでなく、コードレベルでも環境に応じた処理を切り替えることができます。
9. 環境変数との連携も重要
クラウド環境やDockerを利用する場合、環境変数からプロファイルを切り替えることもよくあります。
export SPRING_PROFILES_ACTIVE=prod
これにより、CI/CD環境でも柔軟に設定が切り替えられます。
10. プロファイルの指定がない場合の挙動
「10. プロファイルの指定がない場合の挙動」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
もしspring.profiles.activeの指定がなかった場合、application.ymlだけが読み込まれます。そのため、常に明示的にプロファイルを指定しておくことがトラブルを避けるポイントです。
11. Spring Boot設定ファイルの命名規則と注意点
プロファイル付きの設定ファイルは、必ずapplication-プロファイル名.ymlの形式で命名してください。スペルミスがあるとSpring Bootが正しく読み込めません。
また、複数のプロファイルを指定したい場合はカンマ区切りで記述することもできます。
spring:
profiles:
active: dev,test
12. Spring Boot 3.xでの設定変更に注意
Spring Boot 3.x系では、一部のプロパティの名前や構造が変更されているため、公式ドキュメントを確認しながら移行対応を行いましょう。
たとえば、セキュリティ関連の設定やmanagementに関するエンドポイント設定などに変更があります。