Java 開発において、設定ファイルは主に以下の2種類が使われる:
.properties
ファイル:プロパティ形式.yml
ファイル:YAML形式
どちらも設定値を外部から読み込むために使われ、Spring Boot に限らず Java の各種フレームワークや独自アプリでも使える。
.properties の特徴
書式
key=value
の形式で、単純明快- 1行に1設定
# config.properties
app.name=MyTool
app.version=1.2.3
app.maxUsers=100
Java標準による読み込み例(java.util.Properties)
import java.io.*;
import java.util.*;
public class PropertiesReader {
public static void main(String[] args) throws IOException {
Properties props = new Properties();
try (FileInputStream fis = new FileInputStream("config.properties")) {
props.load(fis);
}
String name = props.getProperty("app.name");
int maxUsers = Integer.parseInt(props.getProperty("app.maxUsers"));
System.out.println("アプリ名: " + name);
System.out.println("最大ユーザー数: " + maxUsers);
}
}
利点
- Java 標準(
java.util.Properties
)で読み込み可能 - IDEやツールが対応しやすい(補完・ハイライトなど)
- 行単位で完結 → トラブル時の原因切り分けがしやすい
使用例
- Java SE のコンフィグファイル
- 独自開発ツールや CLI の設定
- JDBC 設定(JDBC接続用propertiesファイルなど)
.yml(YAML)の特徴
書式
- インデントにより構造を表現
- JSON と同じく入れ子構造を自然に書ける
# config.yml
app:
name: MyTool
version: 1.2.3
maxUsers: 100
features:
- login
- dashboard
- settings
// @Value(単発)
@Value("${app.name}")
private String appName;
// @ConfigurationProperties(まとめて取得)
@Component
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private int maxUsers;
// getter/setter
}
利点
- 階層的な設定に強い
- 配列やマップの表現が直感的
.json
に比べて記述が簡潔でコメントも書きやすい
弱点
- インデントミスしやすい
- Java 標準では読み込めず、外部ライブラリ(SnakeYAMLなど)が必要
使用場面
- Spring Boot の application.yml(代表例)
- Micronaut、Quarkus など近年のフレームワーク
- Kubernetes, GitHub Actions 等 DevOps 系統でも広く使用
まとめ
項目 | .properties | .yml |
---|---|---|
書き方 | 単一キーで1行 | 階層構造・リスト対応 |
Java 標準対応 | java.util.Properties で読み込める | 標準では不可、外部ライブラリ必要 |
可読性 | 単純で IDE 向き | 構造が可視化しやすい |
設定が深くなる場合 | a.b.c.d.e=f で読みにくくなる | インデントで構造化しやすい |
エラー影響範囲 | 1行だけ壊れる | インデントミスで全体が壊れることも |
DevOps や設定管理ツール | 非対応(使いにくい) | よく使われる(GitHub Actions, K8s 等) |
コメント