こんにちは、かつコーチです。
Spring Bootのプロジェクトを開くと、src/main/resourcesの中にapplication.propertiesという空っぽに近いファイルがあります。
「何も書かれていないから重要じゃないのでは」と思うかもしれませんが、実はこのファイルこそがアプリの動作を細かく制御する司令塔です。
この記事では、application.propertiesの基本的な書き方と、よく使う設定項目を解説します。
application.propertiesとは?
アプリの設定を一元管理するファイル
application.propertiesとは、Spring Bootアプリの動作設定(サーバーのポート番号、データベース接続情報、ログの出力レベルなど)を、キー=値の形式でまとめて記述するファイルです。
これまでの記事で紹介した「自動設定(Auto Configuration)」は、あくまで基本的なデフォルト値を使って動いてくれる仕組みでした。application.propertiesに値を書くことで、そのデフォルト値を自分のプロジェクトに合わせて上書きできます。
YAML形式との違い
Spring Bootでは、同じ役割を持つファイルとしてapplication.yml(YAML形式)も使えます。
# application.properties
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
# application.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
どちらも最終的にSpring Bootが読み込む内容は同じです。.propertiesは1行ずつフラットに書けるのでシンプル、.ymlは階層構造で書けるので設定項目が多くなったときに見通しがよい、という違いがあります。
本シリーズでは初学者に馴染みやすい.properties形式を基本として扱いますが、実務では両方に出会う可能性があるので、どちらの記法でも同じ設定ができることは覚えておきましょう。
基本の書き方
手順1:サーバーのポート番号を変更する
デフォルトでは、Spring Bootは8080番ポートでアプリを起動します。
他のアプリとポートが競合する場合や、複数のSpring Bootアプリを同時に動かしたい場合は、ポート番号を変更します。
# src/main/resources/application.properties
server.port=8081
この1行を追加して起動し直すと、http://localhost:8081でアプリにアクセスできるようになります。
手順2:アプリ名やログレベルを設定する
アプリ名や、コンソールに出力するログの詳細さも設定できます。
spring.application.name=demo-app
# ログレベルの設定(TRACE, DEBUG, INFO, WARN, ERRORの順に詳しい→粗い)
logging.level.root=INFO
logging.level.com.example.demo=DEBUG
logging.level.com.example.demo=DEBUGのように、自分のパッケージだけログレベルを細かくしておくと、フレームワーク側の大量のログに埋もれず、自分が書いたコードの動きを追いやすくなります。
手順3:データベース接続情報を設定する
データベースを使う場合、接続先の情報もこのファイルに記述します。
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
データベース連携の詳しい実装はSpring Data JPAの記事で扱いますが、接続情報自体はapplication.propertiesに集約されるという点だけ、ここで押さえておいてください。
つまずきやすい設定・注意点
プレフィックスのスペルミスに気づけない
application.propertiesのキーは、単なる文字列としてしか認識されません。
そのため、スペルミスをしてもコンパイルエラーにはならず、「なぜか設定が反映されない」という分かりにくい不具合になります。
❌ Before
srever.port=8081
# "server"のスペルミスに気づかず、
# ポートがデフォルトの8080のままで「設定が反映されない」と悩む
✅ After
server.port=8081
# 正しいキー名で記述する。IDEの補完機能を活用すると
# タイプミスに気づきやすい
筆者も一度、データベース接続設定でspring.datasoruce.urlとタイプミスをしてしまい、「接続情報を書いたはずなのにデフォルトのH2データベースに繋がってしまう」という現象に遭遇したことがあります。
IntelliJ IDEAなどのIDEはapplication.propertiesのキーに対して補完・警告を出してくれるので、必ず入力補完を確認しながら書く習慣をつけましょう。
応用・一歩先の使い方
application.propertiesに書いた値は、コード側から@Valueアノテーションを使って読み込むこともできます。
# application.properties
app.welcome-message=ようこそ、Spring Bootの世界へ!
@RestController
public class WelcomeController {
@Value("${app.welcome-message}")
private String welcomeMessage;
@GetMapping("/welcome")
public String welcome() {
return welcomeMessage;
}
}
こうすることで、環境ごとに変わる可能性のある値(メッセージ、URL、上限件数など)をコードから切り離し、設定ファイル側で一元管理できるようになります。
環境別に設定を切り替える方法は、DI・MVC基礎編以降でさらに詳しく扱っていきます。
まとめ
この記事のポイント
application.propertiesはSpring Bootアプリの動作をキー=値形式で制御する設定ファイル- ポート番号・ログレベル・データベース接続情報などをここに集約する
.yml形式でも同じ設定が可能で、階層が深い場合はYAMLの方が見通しがよい- キー名のスペルミスはエラーにならず「反映されない」不具合になるため、IDEの補完を活用する
次に読むべき記事
環境構築編はここで一区切りです。
次はいよいよSpring Bootの中核であるDIの考え方から、「DI(依存性注入)の基本的な考え方」で本格的なフレームワーク基礎に入っていきましょう。
タグ: Spring Boot, 初心者向け, 環境構築