🍃

【Spring Boot】設定ファイルの形式はどちらが良いのか

2024/03/17に公開

設定ファイルの使い分けについて

Spring Bootのアプリケーション設定ファイルは、以下2種類の形式が存在します。

  • application.properties
  • application.yml

書き方の違い、選ぶポイントについて解説します。

書式比較表

書式を比較すると、以下の通りです。

特性 application.properties application.yml
形式 キーと値のペア YAML
階層設定 ドット(.)を使った階層表現 インデントによる階層表現

具体的な書き方

データベース接続とメールサーバーの設定を書くと、以下のような書き方になります。

application.properties
#データベース接続設定
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#メールサーバー設定
spring.mail.host=smtp.example.com
spring.mail.port=587
spring.mail.username=email@example.com
spring.mail.password=emailpassword
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: user
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
  mail:
    host: smtp.example.com
    port: 587
    username: email@example.com
    password: emailpassword
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true

結局どっちが良いの?(選ぶポイント等)

個人的には、application.ymlの方が良いと感じています。

小規模プロジェクトで設定ファイルの記述内容が少ない場合、キーと値のペアを一目見ればわかるapplication.propertiesの方が好まれるかもしれません。

大規模プロジェクトの場合、設定内容が多くなることでファイルの内容が複雑になる可能性があり、可読性を考慮すると複雑なデータ構造を階層で直感的に表現できるapplication.ymlの方が好まれると思います。

パフォーマンス面の違いも比較対象になるかもれませんが、設定ファイル自体アプリケーションの起動時に読み込む内容なので、システムの動作に影響を与えることはほとんどないです。
ただ、他ライブラリがどちらを推奨しているかは考慮する必要はあるかもしれません。(ライブラリの設定の書き方がどちらかに寄っている可能性があるということ)

GitHubで編集を提案

Discussion