カテゴリ: Spring 更新日: 2025/09/12

application.ymlの基本的な記述ルールを完全解説!初心者向けインデントと階層の書き方

application.ymlの基本的な記述ルール(インデントや階層)
application.ymlの基本的な記述ルール(インデントや階層)

新人と先輩の会話形式で理解しよう

新人

「Spring Bootの設定ファイルでよく見るapplication.ymlって何のために使うんですか?」

先輩

application.ymlはSpring Bootの設定をまとめるファイルで、アプリケーションの動作に関わる重要な情報を管理するために使われるんだ。」

新人

「他の.propertiesファイルと何が違うんですか?」

先輩

「そこが大事なポイントだね。YAML形式は階層的な構造で記述できて、視認性が高いんだよ。具体的に説明していこう。」

1. application.ymlとは?(役割と基本的な意味)

1. application.ymlとは?(役割と基本的な意味)
1. application.ymlとは?(役割と基本的な意味)

application.ymlは、Spring Bootプロジェクトでアプリケーションの設定を記述するファイルです。Javaアプリケーションが起動するときに、application.ymlの内容が読み込まれ、環境設定や接続情報、カスタム設定などが適用されます。

このファイルは、以下のような情報を設定するために使われます:

  • ポート番号の変更(例:8080 → 8081)
  • データベース接続情報(ユーザー名・パスワード・URLなど)
  • ログレベルの設定
  • プロファイルごとの設定切替(dev, prod など)

例えば、Spring MVCで@Controllerを使用したWebアプリケーションを構築する場合、application.ymlでサーバーのポートやテンプレートのパスを設定することが一般的です。

2. なぜapplication.ymlを使うのか?(.propertiesファイルとの違い)

2. なぜapplication.ymlを使うのか?(.propertiesファイルとの違い)
2. なぜapplication.ymlを使うのか?(.propertiesファイルとの違い)

application.propertiesも設定ファイルとして利用できますが、application.ymlには以下のようなメリットがあります:

  • 階層構造がわかりやすい
  • 設定のグループ化ができる
  • 配列やネストの表現が自然で見やすい

例えば、以下のようにapplication.propertiesでデータベース設定を書くとします:


spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=pass

これをapplication.ymlで記述すると、次のように階層的に整理できます:


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/sampledb
    username: root
    password: pass

このように、YAML形式では設定が親子関係でまとまり、設定内容が直感的に理解しやすくなるのです。

特にSpring Bootで開発する場合、application.ymlは視認性と保守性に優れているため、多くのプロジェクトで採用されています。

【補足】インデントと階層構造のルールの基本

application.ymlでは、スペースによるインデントが文法として必須になります。タブは使用できません。

例えば、以下のように記述ミスをすると、Spring Boot起動時にパースエラーになります:


spring:
datasource:
url: jdbc:mysql://localhost:3306/sampledb

正しい記述は、次のようにスペース2つ以上でインデントを行います:


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/sampledb

設定項目の階層が深くなるほど、インデントも深くなります。これにより、親子関係が明確になり、保守や追加がしやすくなります。

【補足】プロファイルごとの切替設定も可能

YAMLファイルでは、環境ごとに設定を切り替える「プロファイル」の定義もできます。例えば、devprodの2つの環境を用意したい場合、次のように記述します:


spring:
  config:
    activate:
      on-profile: dev
server:
  port: 8081

このように、開発環境(pleiades + Gradle)での設定を柔軟に制御できるのも、application.ymlの大きな特徴です。

3. YAMLの基本ルール(インデント・配列・マップの記述方法)

3. YAMLの基本ルール(インデント・配列・マップの記述方法)
3. YAMLの基本ルール(インデント・配列・マップの記述方法)

application.ymlファイルは、YAML形式で記述されるため、まずYAMLの基本ルールを理解することが重要です。特に、インデントや階層構造はYAMLの要となるため、細かい記述の違いが重大なエラーにつながることもあります。

YAMLでは、インデントは必ず半角スペースで記述し、タブ文字は使用できません。多くの場合、スペース2文字または4文字でインデントするのが一般的です。次に、配列とマップ(キーと値のセット)の記述方法を見ていきましょう。

配列(リスト)の記述例:


my:
  fruits:
    - apple
    - banana
    - orange

このように、-を使って複数の値をリストとして記述します。my.fruitsには3つの要素が含まれる配列が設定されています。

マップ(キーと値)の記述例:


server:
  port: 8080
  servlet:
    context-path: /sample

このように、コロン:を使ってキー: 値のペアを記述します。階層が深くなると、その都度スペースでインデントします。

application.ymlでは、これらの記法を組み合わせることで柔軟な設定が可能になります。Spring Bootはこの構造を正確に読み取るため、記述ミスがあるとアプリケーションが起動しない原因にもなります。

4. よくある記述ミスとそのエラー例(インデントミス、コロンの付け忘れなど)

4. よくある記述ミスとそのエラー例(インデントミス、コロンの付け忘れなど)
4. よくある記述ミスとそのエラー例(インデントミス、コロンの付け忘れなど)

application.ymlを書くときに初心者がつまずきやすいポイントは、インデントや構文のミスです。特に注意が必要なのは以下のようなケースです:

インデントがずれている場合:


spring:
  datasource:
  url: jdbc:mysql://localhost:3306/sampledb

この例では、urlのインデントがdatasource:と同じレベルになっており、正しくネストされていないためエラーになります。正しくは以下のように記述します:


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/sampledb

コロン:の付け忘れ:


server
  port: 8080

serverの後に:がないため、構文エラーになります。正しい記述は以下です:


server:
  port: 8080

タブを使ってしまった場合:


spring:↹
↹datasource:
↹↹url: jdbc:mysql://localhost:3306/sampledb

上記のように、タブ文字(↹)を使用すると、Spring Bootがファイルを読み取れずに例外が発生します。エディタの設定でスペースを使うようにすることを強くおすすめします。

キーの重複:


server:
  port: 8080
server:
  port: 9090

このように同じキーが複数回登場すると、後の設定で上書きされます。意図的でなければ、キーの重複も注意が必要です。

YAMLでは、正しく書かれていないとアプリケーションの起動時にエラーが発生します。少しのスペースの違いや記号の欠落が重大なバグの原因になるので、記述ミスには十分に注意しましょう。

5. Spring Bootで読み込まれるapplication.ymlの位置と構成

5. Spring Bootで読み込まれるapplication.ymlの位置と構成
5. Spring Bootで読み込まれるapplication.ymlの位置と構成

Spring Bootでは、application.ymlを正しい場所に配置することで、自動的に設定を読み込む仕組みになっています。

通常は、プロジェクトのsrc/main/resourcesディレクトリ配下にapplication.ymlを配置します。この場所にあると、Spring Bootが起動時に自動で読み込んでくれます。

配置場所の例:


プロジェクトルート/
└─ src/
   └─ main/
      └─ resources/
         └─ application.yml

pleiades + Gradle環境でも、この構成は共通です。pleiadesでプロジェクトを作成し、resourcesディレクトリにapplication.ymlを新規作成することで、Spring Bootが自動的に設定ファイルとして認識します。

構成の基本的な中身の例:


server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/sampledb
    username: user
    password: pass
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html

@Controllerで作成したコントローラは、上記のようにthymeleafテンプレート設定をapplication.ymlで指定することによって、resources/templates内のHTMLファイルをレンダリングできるようになります。

このように、application.ymlはプロジェクト全体の動作に直結する重要な役割を果たすため、正しい配置・記述・構文を理解して使いこなすことが不可欠です。

6. よく使うプロパティの例(server.port、spring.datasourceなど)

6. よく使うプロパティの例(server.port、spring.datasourceなど)
6. よく使うプロパティの例(server.port、spring.datasourceなど)

application.ymlには、Spring Bootプロジェクトの基本的な挙動を制御するためのプロパティ設定を記述します。特に頻繁に使われるプロパティには、server.portspring.datasourceなどがあります。これらは、アプリケーションのポート番号やデータベースの接続情報を設定するために使用されます。

ポート番号の設定:

Spring Bootのデフォルトポートは8080ですが、server.portを設定することで任意のポートに変更できます。


server:
  port: 8081

この設定により、アプリケーションはhttp://localhost:8081で起動するようになります。

データベース接続設定:

Spring Bootでは、データベース接続情報をspring.datasourceに記述します。


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/sampledb
    username: root
    password: pass

これにより、アプリケーション起動時に指定したMySQLデータベースへ自動的に接続されます。

テンプレートエンジン(Thymeleaf)の設定:

@ControllerでHTMLを返す際には、Thymeleafの設定も重要です。


spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html

この設定により、resources/templatesフォルダ内の.htmlファイルがレンダリング対象になります。

7. 階層構造を意識した設定例(spring.datasource.urlなどのネスト例)

7. 階層構造を意識した設定例(spring.datasource.urlなどのネスト例)
7. 階層構造を意識した設定例(spring.datasource.urlなどのネスト例)

application.ymlの最大の特徴は、ネストされた構造で設定を整理できる点です。ここでは、Spring Bootでよく使用する設定項目を使いながら、階層構造を意識した記述例を紹介します。

データソース設定(階層構造の基本):


spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/mydb
    username: user
    password: secret
    driver-class-name: org.postgresql.Driver

spring.datasourceの下に、urlusernamepassworddriver-class-nameといったプロパティがネストされ、1つのグループとして設定されています。このように、階層構造にすることで、関連する設定をまとめて見やすく管理できます。

ログ設定の例:


logging:
  level:
    org.springframework: INFO
    com.example: DEBUG

こちらも階層的に記述されており、パッケージごとにログレベルを指定できます。設定が視覚的にわかりやすいため、開発中のデバッグ作業にも役立ちます。

メッセージ国際化設定:


spring:
  messages:
    basename: messages
    encoding: UTF-8

このように、階層を意識した構成で設定を記述すると、プロジェクトの可読性と保守性が大きく向上します。スペースによるインデントが正確であることが重要なので、設定の追加や編集の際は注意してください。

8. application.ymlを使ったプロジェクト設定の実践例

8. application.ymlを使ったプロジェクト設定の実践例
8. application.ymlを使ったプロジェクト設定の実践例

最後に、application.ymlを実際のSpring Bootプロジェクトでどのように活用するかの具体例を紹介します。この例では、@Controllerを使用し、ThymeleafでテンプレートをレンダリングするシンプルなWebアプリケーションを想定しています。

application.yml全体例:


server:
  port: 8082

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    username: sa
    password:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  messages:
    basename: messages

この設定では、以下のような内容を構成しています:

  • server.portでポート番号を8082に指定
  • spring.datasourceでH2メモリDBに接続
  • spring.thymeleafでテンプレートのパスと拡張子を設定
  • spring.mvc.viewでJSPベースのビュー設定を指定
  • spring.messagesで国際化ファイルの読み込み先を指定

このようにapplication.ymlを使うことで、アプリケーション全体の設定を1つのファイルで一元管理できます。特にpleiades + Gradle環境では、GUIで依存関係を追加しながら、設定ファイルを手動で調整するスタイルが相性抜群です。

また、@Controllerを使った画面遷移において、application.ymlでテンプレートのプレフィックスやサフィックスを定義することで、ビューレンダリングの動作を効率的に制御できます。テンプレートのファイル名だけで呼び出せるようになるため、記述の簡略化にもつながります。

このように、application.ymlは単なる設定ファイルではなく、プロジェクト全体を制御する重要な役割を果たします。正しい記述ルールや階層構造を理解し、積極的に活用することで、初心者でも本格的なWebアプリケーションの構築が可能になります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
Javaのメソッドを呼び出す書き方を完全解説!mainメソッドから実行する基本
Java のメソッドとは?基本の書き方を学ぼう
Javaの多次元配列(2次元配列)とは?初心者向けにわかりやすく解説
Javaの配列をコピーする「Arrays.copyOf()」の基本を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
SQLのINSERT文を完全ガイド!初心者でもわかるデータの追加方法
No.2
Java&Spring記事人気No2
HTMLのセレクトボックス(プルダウン)の使い方を完全ガイド!selectとoptionの基本を覚えよう
No.3
Java&Spring記事人気No3
Spring Bootで学ぶ!セッションの有効期限(タイムアウト)設定の基礎
No.4
Java&Spring記事人気No4
Java のファイル構成を理解しよう(.javaと.class)|初心者向けにわかりやすく解説