Spring Bootの設定(application.properties, YAML)を完全ガイド!初心者向けにやさしく解説
新人
「Spring Bootって便利って聞きますけど、設定ファイルって何をするためのものなんですか?」
先輩
「設定ファイルは、アプリケーションの動作を簡単に切り替えられるようにするためのものだよ。特にapplication.propertiesやapplication.ymlは、Spring Bootでよく使う設定ファイルだね。」
新人
「どうやって使うんですか?どこに書けばいいんでしょう?」
先輩
「それじゃあ、まずはapplication.propertiesの基本から順番に見ていこうか。」
1. Spring Bootの設定とは?役割と目的を理解しよう
Spring Bootの設定ファイルとは、アプリケーションの動作を制御するためのファイルです。起動ポート番号の変更、ログの出力レベル、データベース接続情報などを、この設定ファイルに書くことで、プログラムを書き換えることなく動作を変更できます。
Spring Bootでは、主に次の2種類の形式で設定を行います。
- application.properties:シンプルなキーと値の組み合わせ
- application.yml:YAML形式で階層構造が分かりやすい
どちらを使っても同じことができますが、好みによって使い分けがされています。
また、設定ファイルはsrc/main/resourcesディレクトリの中に配置されるのが一般的です。これは、Spring Bootがこの場所を自動的に探すようになっているからです。
2. application.propertiesの基本的な使い方
application.propertiesは、Spring Bootで最もよく使われる設定ファイルです。キーと値を=で結ぶ形式で設定を書いていきます。
例えば、Webアプリケーションの起動ポートを変更したい場合、次のように書きます。
server.port=8081
この設定により、デフォルトの8080ポートではなく、8081ポートでアプリケーションが起動します。
さらに、アプリケーション名やログの設定も行えます。
spring.application.name=sample-app
logging.level.org.springframework=INFO
これにより、アプリケーション名がsample-appとなり、Springのログ出力レベルがINFOに設定されます。
設定ファイルはsrc/main/resourcesフォルダ内に保存します。Spring Bootではこの場所がデフォルトで読み込まれるため、特別な指定をしなくても自動的に設定が反映されます。
Pleiades環境でプロジェクトを作成した場合も、プロジェクト内にあるsrc/main/resourcesの中にapplication.propertiesファイルを新規作成するだけでOKです。
設定ファイルの内容が実際にどのように影響するかを見てみましょう。ここでは、コントローラで簡単な画面を表示する例を紹介します。@RestControllerではなく、@Controllerを使って書いています。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/")
public String index(Model model) {
model.addAttribute("message", "Spring Bootの設定ファイルからこんにちは!");
return "index";
}
}
このコントローラは、ルートURL(/)にアクセスすると、index.htmlを表示し、メッセージを画面に渡します。
このとき、設定ファイルでテンプレートエンジンの設定をしておくと便利です。
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
application.propertiesを使った設定を活かすために、必要な依存関係をbuild.gradleに追加する必要があります。Pleiadesのチェック機能で追加してもよいですが、手動で編集することもあります。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
これにより、Thymeleafによる画面表示と、Webアプリケーション開発に必要なモジュールがプロジェクトに追加されます。
Pleiadesでは、application.propertiesの中でプロパティ名を入力する際に、入力補完が効きます。たとえばserver.と入力すると候補が一覧表示されるので、初心者でも間違えにくくなっています。
また、存在しないキーを入力した場合は、警告が表示されるため、間違いにもすぐに気づけるようになっています。
3. application.propertiesでよく使う便利な設定項目まとめ
Spring Bootのapplication.propertiesでは、さまざまな設定が可能です。ここでは、Gradleプロジェクトを使って開発する際によく使われる項目を中心に紹介します。初心者でも理解しやすいよう、実際の使用例とともに丁寧に解説します。
ポート番号を変更することで、他のアプリケーションと競合しないように設定できます。
server.port=8081
アプリケーションの名前を指定すると、ログや監視ツールで識別しやすくなります。
spring.application.name=demo-application
開発中は詳細なログを見たいときがあります。以下のようにDEBUGやINFOなどに設定できます。
logging.level.org.springframework=DEBUG
HTMLテンプレートを頻繁に変更する場合、キャッシュが有効だと反映されないことがあります。開発中は無効にしておくと便利です。
spring.thymeleaf.cache=false
開発用のデータベースを接続するには以下のように記述します。
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
4. application.ymlとは?YAML形式の書き方とproperties形式との違い
application.ymlは、Spring Bootの設定ファイルとしてapplication.propertiesと並んでよく使われる形式です。YAML形式は階層構造をインデントで表すことができ、設定をより見やすく整理できます。
以下は、ポート番号やアプリケーション名を設定する例です。プロパティ形式と違って、インデントで階層を表現する点が特徴です。
server:
port: 8082
spring:
application:
name: demo-yml-app
上記の設定は、application.propertiesでは以下のようになります。
server.port=8082
spring.application.name=demo-yml-app
YAML形式では、インデントをタブ文字ではなく半角スペースで記述しなければなりません。スペースの数や位置を間違えると、Spring Bootが起動時にエラーになります。
また、階層構造が深くなった場合は見た目でブロックが分かりやすくなるため、大規模な設定や配列構造を持つ設定にはYAMLが向いています。
テンプレートエンジンのパスやサフィックスの設定もYAML形式で記述可能です。
spring:
thymeleaf:
prefix: classpath:/templates/
suffix: .html
cache: false
YAMLでは、配列やMapのような構造も簡単に記述できます。以下は複数の管理者メールアドレスを設定する例です。
mail:
admins:
- admin1@example.com
- admin2@example.com
- admin3@example.com
これをapplication.propertiesで表現すると次のようになります。
mail.admins[0]=admin1@example.com
mail.admins[1]=admin2@example.com
mail.admins[2]=admin3@example.com
YAMLの方が構造的に整理されており、視認性が高くなっています。
application.propertiesとapplication.ymlのどちらを使うかは、プロジェクトやチームの方針によります。初心者にとってはapplication.propertiesの方がシンプルで書きやすいという利点があります。
一方で、設定の項目数が増えてくると、YAML形式の方が視認性や保守性が高くなる場面もあります。特に配列やネスト構造がある場合は、application.ymlを使った方が効率的です。
Spring Bootではどちらの形式も同時に扱えますが、両方に同じプロパティがあるとプロパティ形式が優先されるため、どちらか一方に統一するのが良い運用方法です。
5. application.propertiesとapplication.ymlの使い分けとメリット比較
Spring Bootで設定ファイルを扱うとき、application.propertiesとapplication.ymlのどちらを使えばよいか迷うことがあります。それぞれの形式には特徴と利点があり、プロジェクトの規模やチームの方針によって使い分けるのが一般的です。
- 設定が単純で初心者にとって書きやすい
- 1行に1つの設定を書くため、見落としが少ない
- IDE(Pleiades)での補完機能がわかりやすい
- 階層構造をきれいに表現できる
- 配列やネスト構造をシンプルに記述できる
- 大規模プロジェクトで設定管理がしやすい
例えば、以下のようなYAML形式の設定は、構造がはっきりしていて読みやすいです。
spring:
datasource:
url: jdbc:mysql://localhost:3306/sample
username: user
password: pass
このような複雑な設定をapplication.propertiesで書くと、可読性が下がる場合があります。
初心者にはapplication.propertiesから始めるのがおすすめですが、慣れてきたらapplication.ymlにも挑戦してみるとよいでしょう。
6. 設定ファイルによってコントローラの挙動がどう変わるか見てみよう
ここでは、設定ファイルを変更することで、@Controllerで構成された画面表示にどのような影響があるかを具体的に見ていきましょう。
まず、設定ファイルに以下のようなプロパティを記述します。
spring.application.name=message-sample
message.greeting=ようこそ、Spring Bootへ!
このmessage.greetingというカスタムプロパティを、コントローラ内で読み込むようにします。
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class GreetingController {
@Value("${message.greeting}")
private String greetingMessage;
@GetMapping("/greeting")
public String greeting(Model model) {
model.addAttribute("message", greetingMessage);
return "greeting";
}
}
このように、設定ファイルで定義した値をアノテーション@Valueを使って取り込み、画面に表示することができます。
greeting.htmlには以下のように記述します。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>挨拶ページ</title>
</head>
<body>
<h1 th:text="${message}">メッセージが表示されます</h1>
</body>
</html>
ブラウザでhttp://localhost:8080/greetingにアクセスすると、設定ファイルに書いた内容が表示されるようになります。これにより、コードを変更せずに挙動を柔軟に調整できるのがSpring Boot設定ファイルの魅力です。
7. 初心者が設定ファイルでつまずきやすいポイントとその対処法
Spring Bootの設定ファイルはとても便利ですが、初心者がよくつまずくポイントもいくつかあります。ここでは代表的な失敗とその対処法を紹介します。
application.ymlで、タブ文字やスペースの数が間違っていると、アプリケーションが正しく起動しません。エラーメッセージには「mapping values are not allowed here」や「could not find expected ':'」などと表示されます。
対処法:インデントには必ず半角スペースを使い、階層構造に注意して書くこと。
正しいプロパティ名を書かないと、設定が反映されません。例えばspring.applicationn.nameのような誤記は意外と多いです。
対処法:Pleiadesでは補完機能があるので、それを活用して正確に入力すること。
application.propertiesやapplication.ymlは、src/main/resourcesに配置しなければ認識されません。
対処法:ファイルの場所を確認し、必ずリソースフォルダの直下に配置すること。
複数のプロファイル(開発用、テスト用など)を使う場合、設定の優先順位が複雑になります。
対処法:最初のうちはapplication.propertiesまたはapplication.yml一つにまとめ、慣れてからプロファイル分けを学ぶとよいです。
これらの注意点をおさえておけば、設定ファイルのトラブルを未然に防ぐことができます。
まとめ
SpringBootの設定ファイルであるapplicationpropertiesとapplicationymlは初心者が最初につまずきやすい部分ですが慣れてくるとアプリケーション全体の挙動を柔軟に制御できる非常に便利な仕組みになります。特に設定内容をコードに直接書き込まず環境ごとに切り替えられる点は現代のシステム開発において欠かせない考え方であり設定ファイルの理解が深まるほど開発効率も品質も向上していきます。設定の役割を正しく把握しておくことでサーバーポート変更ログレベル調整データベース接続など日常的によく使う設定をすぐに扱えるようになり学習を進めるうえでの大きな助けになります。さらに設定ファイルはコントローラの動作やテンプレートエンジンの挙動にも影響するため設定とアプリケーションコードの関係を理解することで画面表示や動作確認がよりスムーズに行えるようになります。特にspringapplicationnameやspringthymeleafprefixなどの基本項目は初心者が必ず触る設定であり早い段階で慣れておくとその後の開発が一気に楽になります。またyml形式は階層構造が視覚的に理解しやすく設定数が増えた際の見通しが良いため中級者以降の開発ではpropertiesよりも活躍する場面が増えていきます。配列やネスト構造を自然に表現できる特性は大規模プロジェクトで特に効果を発揮し複数環境の設定や外部サービスとの連携設定も分かりやすく管理できます。設定ファイルがsrcmainresourcesに自動的に読み込まれるという仕組みも理解しておくとトラブルの予防につながり初心者がよくやってしまう配置ミスによる起動エラーを防ぐことができます。さらにpleiadesにおける入力補完は設定項目の理解を助け正しい書き方を覚える大きな手助けとなるため学習の段階から積極的に活用すると良いでしょう。設定に慣れてくれば独自の値を定義してコントローラに読み込む方法や環境に応じた設定切り替えも自然に扱えるようになりより柔軟なアプリケーション構築が可能になります。このように設定ファイルの理解はspringboot学習の基盤となり基礎を押さえることで後から学ぶセキュリティやデータベース連携バッチ処理などさまざまな仕組みにも応用が利きます。ここで紹介したような設定ファイルを使いこなすための考え方や書き方を身につければプロジェクトの規模に関わらず安定した開発が行えるようになり設定内容を明確に整理できることでチーム開発における情報共有も格段にやりやすくなります。設定の基本をしっかり押さえたうえで実際の開発で頻繁に触れるプロパティやymlの書き方を習得しておくことは長期的なスキル向上につながり今後springbootで開発を進めるうえでの確かな土台となります。設定ファイルを使い分ける力が身につくと開発効率は大きく改善し新機能追加や既存機能の改善も素早く反映できるようになりアプリケーション全体の品質維持にも大きく貢献します。ここで解説した内容を参考にしながら自分のプロジェクトでも積極的に設定ファイルを触ってみて使い分けを実践することでspringbootの理解が格段に深まり実践力が高まります。これらの基礎を積み重ねていくことでさまざまな場面で応用できる知識となり設定という仕組みそのものが開発現場でどれほど重要な位置付けにあるかをより実感できるはずです。
設定ファイル活用のサンプルコード
server.port=8085
spring.application.name=sample-config-app
custom.message=設定ファイルから読み込んだメッセージです
@Controller
public class SampleConfigController {
@Value("${custom.message}")
private String message;
@GetMapping("/config")
public String config(Model model) {
model.addAttribute("msg", message);
return "config";
}
}
spring:
thymeleaf:
prefix: classpath:/templates/
suffix: .html
cache: false
生徒:きょう学んだ設定ファイルの使い方ですがpropertiesとymlの違いがだいぶわかってきました。
先生:どちらの形式も大切ですが慣れてくると場面に応じて使い分ける力がついてきますよ。
生徒:設定内容をコードに書かなくても切り替えられるのがとても便利だと思いました。
先生:その感覚はとても大事ですね設定をうまく使えば開発効率も品質も上がります。
生徒:環境ごとの設定切り替えも次は挑戦してみたいです。
先生:ぜひやってみましょう設定ファイルを理解するほどspringboot開発が楽しくなりますよ。